如何使用 Microsoft.Office.Interop.Outlook 库使用 C# 读取 .eml 文件?

How Can I use Microsoft.Office.Interop.Outlook library to read .eml file using C#?

我正在使用此代码在 C# 中读取 .msg 文件

Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();

var item = app.Session.OpenSharedItem("MSG_FILE_PATH") as Microsoft.Office.Interop.Outlook.MailItem;

string body = item.HTMLBody;

如何使用相同的库读取 .eml 文件?

根据我的测试,Outlook 函数 "OpenSharedItem" 仅用于打开 iCalendar 约会 (.ics) 文件、vCard (.vcf) 文件和 Outlook 消息 (.msg) 文件。 eml文件,我想你可以参考下面的代码:

protected CDO.Message ReadMessage(String emlFileName)
{
   CDO.Message msg = new CDO.MessageClass();
   ADODB.Stream stream = new ADODB.StreamClass();
   stream.Open(Type.Missing, ADODB.ConnectModeEnum.adModeUnknown,        
   ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified, String.Empty, String.Empty);
   stream.LoadFromFile(emlFileName);
   stream.Flush();
   msg.DataSource.OpenObject(stream, "_Stream");
   msg.DataSource.Save();
   return msg;
}

更多信息:Retrieve Email Information from .EML Files

谢谢,

西蒙