使用加载项在 Outlook 中打开 EML 文件?

Open EML file in Outlook using Add-In?

我可以使用 Outlook 加载项 (VSTO) 从磁盘打开 EML 文件并 "display" 它吗?

我已经试过了...

Dim filename As String = "c:\test\_test.eml"
Dim mail As Outlook.MailItem = CType(Globals.ThisAddIn.Application.Session.OpenSharedItem(filename), Outlook.MailItem)
mail.Display()

但是 Outlook 抛出一个异常,指出路径无效,即使它是有效的。

有什么想法吗?

OpenSharedItem 不适用于 EML 文件。 Outlook 对象模型不允许您访问 EML 文件。您可以

  1. 解析 EML 文件(或使用可用组件),在 Outlook 中创建新项目并一次设置所有属性

  2. 如果您使用的是 C++ 或 Delphi,则可以使用 IConverterSession MAPI 接口导入数据

  3. 如果使用赎回是一个选项,您可以使用类似下面的内容(超出我的想象):

    将会话调暗为 Redemption.RDOSession = CreateObject("Redemption.RDOSession") Session.MAPIOBJECT = 我.应用程序.Session.MAPIOBJECT 将草稿变暗为 Redemption.RDOFolder = Session.GetDefaultFolder(olFolderDrafts) 将邮件变暗为 Redemption.RDOMAil = Drafts.Items.Add mail.Sent = 真 mail.Import "c:\temp\test,eml", 1024 'olRfc922 mail.Save '现在在 OOM 中重新打开 将 oMail 变暗为 Outlook.MailItem = Me.Application.Session.GetItemFromID(mail.EntryId) 将 forwardedMail 变暗为 Outlook.MailItem = oMail.Forward forwardedMail.Display()