C# 正在获取从.msg文件打开的MailItem的RDOMail

C# 正在获取从.msg文件打开的MailItem的RDOMail,c#,vsto,outlook-addin,outlook-2003,outlook-redemption,C#,Vsto,Outlook Addin,Outlook 2003,Outlook Redemption,是否有方法为从.msg文件打开的Outlook邮件创建相应的实例 我通常的方法是从检查器获取,将其强制转换为邮件项,检索其EntryID和StoreID值,最后通过GetMessageFromID方法从中加载它 但是,对于从.msg打开的消息,EntryID属性返回null。还有别的办法吗?我假设可以使用GetMessageFromMsgFile方法,但是如何从MailItem检索消息的完整路径呢 另外,理想情况下,该解决方案应与Outlook 2003对象模型配合使用。您可以在此处使用两种方法

是否有方法为从
.msg
文件打开的Outlook邮件创建相应的实例

我通常的方法是从
检查器
获取,将其强制转换为
邮件项
,检索其
EntryID
StoreID
值,最后通过
GetMessageFromID
方法从中加载它

但是,对于从
.msg
打开的消息,
EntryID
属性返回
null
。还有别的办法吗?我假设可以使用
GetMessageFromMsgFile
方法,但是如何从
MailItem
检索消息的完整路径呢


另外,理想情况下,该解决方案应与Outlook 2003对象模型配合使用。

您可以在此处使用两种方法

  • 使用将
    邮件项目
    保存到磁盘。然后使用
    GetMessageFromMsgFile
  • 邮件项目
    保存到
    文件夹
    (存储)中以将其持久化,并为其提供
    EntryID
    StoreID
    。使用和将消息持久保存到文件夹中。我通常使用一个。您需要在启动时或定期清除此交换文件夹(Outlook具有延迟锁定,因此您最好使用try/catch)

  • 谢谢我希望有一些更轻量级(性能方面)的东西,不涉及保存,因为这个操作需要在UI线程上执行,但我想我会采用第二种方法。