使用 SaveAs 将 MailItem 另存为 msg 会导致 Outlook 滞后

Saving MailItem as msg using SaveAs causes Outlook lag

我正在编写需要将某些项目保存为 msg 文件的 VSTO Outlook 加载项。问题是,每次我调用 MailItem.SaveAs 都会导致 Outlook 稍微滞后并显示处理光标(蓝色圆圈)。 我试过将它移到一个单独的线程中,但这无济于事。 保存项目的速度非常快(大部分时间不到 100 毫秒),但仍然会导致这种烦人的行为。 我需要保存一个项目以将其读取为 MSG 格式,所以如果我可以直接这样做会更好,但正如我在这里发现的那样: Outlook MailItem as Stream 唯一的解决方案似乎是为此使用 EWS。还有其他选择吗?

也许在这种情况下使用 RDO 会有帮助? 据我了解,另一种选择是从邮件项目属性手动创建 msg。但也许有更简单的方法?

与OOM不同,Outlook所基于的低级别API(Extended MAPI)支持多线程。因此,您可以 运行 辅助线程上的代码而不会对 Outlook 产生任何可见影响 UI。有关详细信息,请参阅 INFO: Save Message to MSG Compound File

您还可以考虑使用第三方包装器围绕扩展 MAPI,例如 Redemption。