【发布时间】:2013-02-06 13:26:31
【问题描述】:
在我们的 MAPI 消息存储提供程序中,我们提供电子邮件和非 Outlook 项目(办公文档等)。从技术上讲,我们将这些文档作为带有单个附件和特定 PR_MESSAGE_CLASS 的 IMessage 对象提供(例如 IPM.Document.txtfile)。然后 Outlook 将此对象视为 DocumentItem,而不是 MailItem。
正如您在下面的屏幕截图中所见,这很好用。预览器按预期工作,双击该项目将在适当的应用程序中打开该项目(例如 记事本)。
但是,在打开项目后,一旦外部应用程序关闭,就会出现问题。预览中断,并且在先选择另一个项目之前无法再次打开该项目。
根据 Outlook Spy,我们的 IMessage 对象仍然非常好。这是 OOM DocumentItem 包装器现在不知何故丢失了它的附件:
什么可能导致这种行为?我们缺少更新吗? Outlook 项目是否显示已损坏的旧 IMessage 对象?我们已经对这个主题进行了相当多的研究,欢迎大家指点!
[编辑 1]
这里是 Outlook 间谍,说明我们的 IMessage 对象仍然可以:
[编辑 2]
只要外部应用程序没有关闭,一切都很好。我可以根据需要多次打开文档,但只要我关闭外部查看器的单个实例,Outlook 项目就会“损坏”。
【问题讨论】:
-
什么是IMessage | GetAttachmentTable 显示?当您尝试重新打开项目时,您能否单步执行您的代码以查看 Outlook 调用?
-
IMessage | GetAttachmentTable 很好,我会在一分钟内更新答案。当在“附件消失”之后双击项目时,Outlook 不会与我们的消息存储提供程序进行太多对话(单个 compareEntryIDs / getIDsFromNames...不会调用我们的 IMessage。
-
Outlook 在调用 GetIDsFromNames 时会请求哪些名称/ID?
-
将在早上我可以访问系统时发布。反过来的问题:为什么您一直关注项目的重新打开,而不是我们关闭外部应用程序时发生的(大量)MAPI 请求?因为当 Outlook 包装器开始出现故障时,我觉得 that ?你怀疑什么吗?
-
它this event相关吗?
标签: outlook outlook-addin mapi