【问题标题】:BeforeItemMove event not fired in Outlook when item is deleted on remote machine在远程计算机上删除项目时,Outlook 中未触发 BeforeItemMove 事件
【发布时间】:2016-06-27 03:20:38
【问题描述】:

我正在开发一个 Outlook 加载项,其中有一些事件将在从草稿中删除项目时触发。因此,当我从我的机器上的草稿中删除文件时,BeforeItemMove 事件会被触发。

但有趣的案例来了。此外,我还有一个虚拟机,在那里我安装了 Outlook 并登录到同一个帐户。所以我的草稿也在那里同步。当我在 VM 上删除草稿时,一段时间后,草稿也会在我的系统上被删除。但这次它不会在我的本地机器上触发BeforeItemMove 事件。我错过了什么?它甚至依赖于 Exchange 吗?或者是我应该订阅的文件夹更新的新事件?下面是我的代码。

    Microsoft.Office.Interop.Outlook.Folder draftsFolder = null;
    draftsFolder = nameSpace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderDrafts) as Microsoft.Office.Interop.Outlook.Folder;
    draftsFolder.BeforeItemMove += new Microsoft.Office.Interop.Outlook.MAPIFolderEvents_12_BeforeItemMoveEventHandler(BeforeItemMoveFromDrafts);

事件方法是

private void BeforeItemMoveFromDrafts(object Item, MAPIFolder MoveTo, ref bool Cancel)
{

...

}

PS。我还引用了文件夹对象,所以这不是问题。

【问题讨论】:

    标签: c# outlook exchange-server outlook-addin


    【解决方案1】:

    据我了解,BeforeItemMove 事件不应在另一台机器上触发。当由于用户操作或通过程序代码将要从文件夹中移动或删除项目时触发它。该代码应针对本地 Outlook 实例运行。

    附:确保在全局范围内声明源对象,以防止它被垃圾收集器清除。

    【讨论】:

    • 当我的文件夹更新时,有没有办法知道我的项目是否被移动?
    • 尝试处理FolderChange 事件。您也可以考虑保留项目列表并在每次与服务器同步后检查它们,请参阅Outlook NewMail event unleashed: the challenge (NewMail, NewMailEx, ItemAdd)。
    • 但是,我如何知道我的文件夹何时同步?有什么活动吗?
    • 甚至 FolderChange 事件也会因用户操作和程序代码而被触发! ://
    猜你喜欢
    • 2017-08-19
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 1970-01-01
    相关资源
    最近更新 更多