使用加载项在 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 文件。您可以
解析 EML 文件(或使用可用组件),在 Outlook 中创建新项目并一次设置所有属性
如果您使用的是 C++ 或 Delphi,则可以使用 IConverterSession MAPI 接口导入数据
如果使用赎回是一个选项,您可以使用类似下面的内容(超出我的想象):
将会话调暗为 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()
我可以使用 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 文件。您可以
解析 EML 文件(或使用可用组件),在 Outlook 中创建新项目并一次设置所有属性
如果您使用的是 C++ 或 Delphi,则可以使用 IConverterSession MAPI 接口导入数据
如果使用赎回是一个选项,您可以使用类似下面的内容(超出我的想象):
将会话调暗为 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()