2

有没有办法以异步方式将文件保存Outlook.MailItem为文件?.msg

我在用着:

MailItem.SaveAs("path", Outlook.OlSaveAsType.olMSG);

但它很慢。

4

1 回答 1

3

不使用 Outlook 对象模型 - 您不能在 Outlook.exe 地址空间(COM 插件)中使用辅助线程:Outlook 将引发异常。如果您从外部应用程序执行此操作,则对 OOM 的所有调用都将被编组到主 Outlook 线程。

由于您将问题标记为 outlook-redemption,因此 Redemption 可以做到这一点 - 从您的插件中,将 的值存储Application.Session.MAPIOBJECT在变量以及MailItem.EntryID属性中。在辅助线程上,创建RDOSession对象的实例(将初始化 MAPI 系统),将其MAPIOBJECT属性设置为保存在主线程上的值,RDOSession.GetMessageFromID,然后调用RDOMail.SaveAs

于 2018-10-30T18:14:23.613 回答