如何获取 Outlook 中刚刚删除的项目?

2023-12-04

我想在每次在 Outlook 插件中删除约会时获取项目对象。问题是项目删除事件处理程序与 ItemAddEventHandler 或 ItemChangeEventHandler 相反,委托不会返回正在删除的项目。我尝试过一些代码片段但他们都没有工作。一个糟糕的解决方法是将 ItemAddEventHandler 附加到垃圾文件夹 (Outlook.OlDefaultFolders.olFolderDeletedItems)。这也不起作用,因为该项目没有移动到垃圾文件夹,而是被删除/添加:所以 EntryID(唯一密钥标识符)不一样......

有人有一段代码可以在删除该项目之前获取该项目吗?


这些事件是异步触发的,所以到了ItemRemove事件触发,该项目已经消失。即使在 MAPI 级别,当文件夹内容表触发 fnevTableModified | TABLE_ROW_DELETED 通知,它仅提供 PR_INSTANCE_KEY 属性的值(您可以在Outlook间谍软件- 我是它的作者 - 单击 IMAPIFolder,转到 GetContentsTable 表,删除项目时查看页面底部的日志)。

如果使用赎回是一个选项(我也是它的作者),你可以使用RDOItems.ItemRemove 事件 - 它确实传递 PR_INSTANCE_KEY 的值作为参数。

仅当您已缓存文件夹中所有项目或至少您感兴趣的项目的该属性的值时,PR_INSTANCE_KEY 才有用。请记住PR_INSTANCE_KEY无法缓存 - 它仅对内容表的特定实例有效(IMAPITable).

另请记住,所有项目事件均仅为 UI 目的而设计,不应将它们用于任何类型的同步。

如果您使用事件进行同步,您的选择是使用ItemRemove事件作为提示,表明您的同步必须尽快运行,并循环遍历商店中的所有项目以找出更改的项目,或者,在 Exchange 的情况下,您可以使用增量更改同步 API (ICS)。它被暴露为RDO文件夹同步器救赎中的对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取 Outlook 中刚刚删除的项目? 的相关文章

随机推荐