DocumentItem(IMessage)在打开后丢失附件

时间:2013-02-21 09:25:33

标签: outlook outlook-addin mapi

在我们的MAPI邮件存储提供商中,我们同时展示了电子邮件和非Outlook项目(办公文档等)。从技术上讲,我们将这些文档作为IMessage对象提供,其中包含一个附件和一个特定的PR_MESSAGE_CLASS(例如 IPM.Document.txtfile )。 Outlook然后将此对象视为DocumentItem,而不是MailItem

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

Before opening - preview works fine

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

After opening - preview breaks, opening breaks

根据Outlook Spy,我们的IMessage对象仍然完美无缺。 OOM DocumentItem包装现在以某种方式错过了它的附件

DocumentItem Missing attachment

可能导致此行为的原因是什么?我们缺少刷新吗? Outlook项目是否显示已损坏的旧IMessage对象?我们已经花了很多关于这个主题的研究,欢迎大家指点!

[编辑1]

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

IMessage still fine

[编辑2]

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

1 个答案:

答案 0 :(得分:0)

答案结果非常简单,

  

PR_MESSAGE_FLAGS 属性需要包含 MSGFLAG_HASATTACH

添加此标志会立即解决问题,并且非常有意义。只是由此产生的Outlook行为(首次访问,然后打破)让我们失望。