1

在我们的 MAPI 消息存储提供程序中,我们提供电子邮件和非 Outlook 项目(办公文档等)。从技术上讲,我们将这些文档作为 IMessage 对象提供,带有单个附件和特定的PR_MESSAGE_CLASS(例如IPM.Document.txtfile)。然后 Outlook 将此对象视为 a DocumentItem,而不是MailItem

正如您在下面的屏幕截图中看到的那样,这很好用。预览器按预期工作,双击该项目将在相应的应用程序(例如记事本)中打开该项目。

打开之前 - 预览工作正常

但是,在打开项目后,一旦外部应用程序关闭,就会出现问题。预览中断,并且在先选择另一个项目之前无法再次打开该项目。

开场后 - 预览休息时间、开场休息时间

根据 Outlook Spy,我们的IMessage对象仍然非常好。现在不知何故缺少附件的是 OOMDocumentItem包装器:

DocumentItem 缺少附件

什么可能导致这种行为?我们缺少更新吗?Outlook 项目是否显示已损坏的旧 IMessage 对象?我们已经对这个主题进行了相当多的研究,欢迎所有的指点!

[编辑 1]

这是 Outlook 间谍,说明我们的IMessage对象仍然可以:

iMessage 还是可以的

[编辑 2]

只要外部应用程序没有关闭,一切都很好。我可以根据需要多次打开文档,但只要我关闭外部查看器的单个实例,Outlook 项目就会“损坏”。

4

1 回答 1

0

原来答案很简单,

PR_MESSAGE_FLAGS属性需要包含MSGFLAG_HASATTACH

添加此标志立即解决了问题,并且非常有意义。只是 Outlook 的结果行为(在第一次访问时工作,然后中断)让我们失望了。

于 2013-03-11T11:23:00.547 回答