Cub*_*bre 6 .net c# mapi outlook eml
我有一个C#应用程序,它读取.msg文件并提取正文和附件.但是当我尝试加载.eml文件时,应用程序崩溃了.我正在加载这样的文件:
MailItem mailItem = (MailItem)outlookApp.CreateItemFromTemplate(msgFileName);
mailItem.SaveAs(fullFilename, OlSaveAsType.olHTML); // save body in html format
for(int i = 0; i < mailItem.Attachments.Count; i++)
mailItem.Attachments[i].SaveAsFile(filename); // save attachments
Run Code Online (Sandbox Code Playgroud)
这适用于.msg文件,但它不适用于.eml文件.我不明白为什么.eml文件不起作用,因为我可以在Outlook 2010中打开.eml文件.
如何使用Outlook 主Interop程序集加载.eml文件?
CreateItemFromTemplate仅适用于MSG/OFT文件.在EML文件中,您需要在代码中显式解析文件或使用第三方库(例如Redemption):
以下代码将创建一个MSG文件,并使用Redemption(RDOSession对象)将EML文件导入其中:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = outlookApp.Session.MAPIOBJECT
set Msg = Session.CreateMessageFromMsgFile("C:\Temp\temp.msg")
Msg.Import "C:\Temp\test.eml", 1024
Msg.Save
MsgBox Msg.Subject
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用消息(RDOMail)访问它的各种属性(主题,正文等)