C# 将.MSG文件转换为.TXT;我应该使用Microsoft.Interop Outlook吗?

C# 将.MSG文件转换为.TXT;我应该使用Microsoft.Interop Outlook吗?,c#,text,outlook,interop,msg,C#,Text,Outlook,Interop,Msg,我正在尝试将.msg文件转换为.txt文件。我有两个问题 1) 我一直在调查并发现Microsoft.Interop Outlook软件包,有一种方法可以提取bodyHTML、To、Send Date和其他一些属性,但我觉得这是一个非常手动的过程,因为我必须删除所有html标记,如、a href等 这是我当前的代码 MailItem mailItem = outlookApp.Session.OpenSharedItem(item) as MailItem; TextFile textFile

我正在尝试将.msg文件转换为.txt文件。我有两个问题

1) 我一直在调查并发现Microsoft.Interop Outlook软件包,有一种方法可以提取bodyHTML、To、Send Date和其他一些属性,但我觉得这是一个非常手动的过程,因为我必须删除所有html标记,如
、a href等

这是我当前的代码

MailItem mailItem = outlookApp.Session.OpenSharedItem(item) as MailItem;
TextFile textFile = new TextFile(); //collection of properties I am interested in
textFile.To = mailItem.To;
textFile.Subject = mailItem.Subject;
textFile.Sent = mailItem.SentOn.ToString();
textFile.Name = Path.GetFileNameWithoutExtension(item);
var atttach = mailItem.Attachments;  //Really just want the names 
textFile.Body = RemoveStuff(mailItem.HTMLBody); //manually removing all html tags
textFiles.Add(textFile);
Marshal.ReleaseComObject(mailItem);
有人知道在C#中是否有一种更有效的方法来实现这一点,或者有一种我不知道的使用互操作的方法吗

2) 如果我使用互操作路径,是否有办法绕过Outlook中询问是否允许访问Outlook的弹出窗口?如果我的目标是创建一个转换器,那么看起来效率很低

非常感谢您的帮助


谢谢

首先,为什么要使用HTMLBody属性而不是纯文本体

其次,可以使用MailItem.saveAs(…,olTxt)将消息另存为文本文件。或者你指的是txt文件中的其他内容

如果您的防病毒应用程序不是最新的,Outlook将引发安全提示。如果您无法控制代码运行的环境,那么扩展MAPi(仅限C++或Delphi)或类似于包装器的(任何语言)几乎是您唯一的选择。有关更多详细信息,请参阅

在中,您可以有如下内容:

using Redemption;
...
RDOSession session = new RDOSession();
RDOMail msg = session.GetMessageFromMsgFile(TheFileName);
msg.SaveAs(TxtFileName, rdoSaveAsType.olTXT);

哇,非常感谢,这正是我需要做的,就是把它保存为文本。(我不知道saveAs,这就是为什么我使用HTMLBody并手动解析所有html标记和实体)。现在唯一的问题是它没有捕获mailItem.To属性。我听说过赎罪,但由于许可证问题,无法使用。再次感谢!!!您是说txt格式不保存To/CC标题吗?或者不包括电子邮件地址?如果我键入mailItem.To,则两者都是空的,但在my.MSG中有收件人。由于它为空,文本文件中没有保存任何内容。如果在OutlookSpy中打开该邮件文件(单击OpenImsGoisting),是否会看到该邮件文件的“PR_DISPLAY_TO”属性?它表示MAPI_E_内存不足,但当我双击这些值时,会看到其中的所有电子邮件地址和名称。