【问题标题】:Deleting mail messages from exchange server from an outlook add-in从 Outlook 加载项从 Exchange 服务器删除邮件
【发布时间】:2017-04-17 01:08:11
【问题描述】:

我正在使用 Visual Studio Tools for Office 为 Outlook 2010(Windows 桌面版)编写插件。 Outlook 客户端配置了交换电子邮件。 我想允许用户从交换服务器中删除消息。 我认为如果我使用交换网络服务或使用一些第三方库应该是可行的,但为了做到这一点,我必须要求用户将他的交换电子邮件配置重新指定到我的加载项 - 我想要避免这种情况。

我想知道是否有更简单的方法可以通过调用一些 Outlook 或 VSTO API 来执行此操作,基本上我正在寻找一种方法来告诉 Outlook 从我的加载项代码中从服务器中删除这些消息。 我已尝试搜索 VSTO 文档,但没有得到任何结果。

【问题讨论】:

  • 这些电子邮件是否在邮箱的文件夹中?
  • 是的,它们是交换的——就像你登录到 Outlook Web 界面 (owa) 一样,你可以在他的收件箱中看到邮件
  • 我可能对您的问题读得太多了,但是是的,当然可以使用 Outlook 对象模型删除任何类型的 Outlook 内容。每个项目(例如 MailItem、AppointmentItem 等)都有一个 Delete 方法。这能回答你的问题吗?

标签: outlook vsto exchangewebservices


【解决方案1】:

不清楚您是否为 Exchange 配置文件启用了缓存模式...但是您可以使用 Outlook 项目的Delete 方法。 Delete 方法删除集合中的单个项目。请注意,Delete 方法将项目从包含文件夹移动到 Deleted Items 文件夹。如果包含文件夹是 Deleted Items 文件夹,Delete 方法将永久删除该项目。

如果您在 Outlook 中启用了缓存模式,您还需要与服务器同步以清除那里的项目。 SyncObject.Start 方法开始使用指定的 Send\Receive 组同步用户的文件夹。例如,一个 VBA 宏说明:

Public Sub Sync() 
  Dim nsp As Outlook.NameSpace 
  Dim sycs As Outlook.SyncObjects 
  Dim syc As Outlook.SyncObject 
  Dim i As Integer 
  Dim strPrompt As Integer 
  Set nsp = Application.GetNamespace("MAPI") 
  Set sycs = nsp.SyncObjects 
  For i = 1 To sycs.Count 
    Set syc = sycs.Item(i) 
    strPrompt = MsgBox( _ 
      "Do you wish to synchronize " & syc.Name &"?", vbYesNo) 
    If strPrompt = vbYes Then 
      syc.Start 
    End If 
  Next 
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多