【问题标题】:Converting .MSG files to .TXT; Should I use Microsoft.Interop Outlook?将 .MSG 文件转换为 .TXT;我应该使用 Microsoft.Interop Outlook 吗?
【发布时间】:2017-10-07 17:04:54
【问题描述】:

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

1)我一直在调查并发现 Microsoft.Interop Outlook 包,有一种方法可以提取 bodyHTML、To、Sent Date 和其他一些属性,但我觉得这是一个非常手动的处理,因为我必须修剪掉所有的 html 标签,例如
、&nbsp、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# 中是否有更有效的方法或使用我不知道的 Interop 的方法?

2)如果我走互操作路线,有没有办法绕过 Outlook 中询问我是否可以访问 Outlook 的弹出窗口?如果我的目标是创建转换器,这似乎效率低下。

非常感谢任何帮助。

谢谢!

【问题讨论】:

    标签: c# text outlook interop msg


    【解决方案1】:

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

    其次,您可以使用 MailItem.saveAs(..., olTxt) 将消息保存为文本文件。或者你的txt文件是什么意思?

    如果您的防病毒应用程序不是最新的,Outlook 会提出安全提示。如果您无法控制代码运行的环境,Extended MAPi(仅限 C++ 或 Delphi)或像 Redemption(任何语言)这样的包装器几乎是您唯一的选择。详情请见http://www.outlookcode.com/article.aspx?id=52

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

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

    【讨论】:

    • 哇,非常感谢,这正是我需要做的,将其保存为文本。 (我不知道 saveAs,这就是为什么我使用 HTMLBody 并手动解析所有 html 标签和实体)。现在唯一的事情是它没有捕获 mailItem.To 属性。我听说过 Redemption,但由于许可,无法使用它。再次感谢!!!
    • 您是说 txt 格式不保存 To/CC 标头吗?还是不包括电子邮件地址?
    • 两者,如果我输入 mailItem.To 它为空,但在我的 .MSG 中显然有收件人。由于它为空,因此没有任何内容被保存到文本文件中。
    • 如果您在 OutlookSpy 中打开该邮件文件(单击 OpenIMsgOnIStg),您是否看到该邮件文件的 PR_DISPLAY_TO 属性?
    • 上面写着 MAPI_E_NOT_ENOUGH_MEMORY 但是当我双击这些值时,我会看到所有的电子邮件地址和姓名。
    猜你喜欢
    • 1970-01-01
    • 2020-08-31
    • 2019-04-04
    • 2015-10-27
    • 1970-01-01
    • 2013-08-05
    • 2013-02-14
    • 2015-07-28
    • 2019-11-09
    相关资源
    最近更新 更多