代码之家  ›  专栏  ›  技术社区  ›  bird

正在转换。MSG文件到。TXT;我应该使用Microsoft吗。互操作Outlook?

  •  0
  • bird  · 技术社区  · 7 年前

    我正试着做一个转换。msg文件。txt。我有两个问题。

    1) 我一直在调查并发现了微软。互操作Outlook包,有一种方法可以提取bodyHTML、To、Sent Date和其他一些属性,但我觉得这是一个非常手动的过程,因为我必须删除所有html标记,例如<br>&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语言中有没有更有效的方法来实现这一点,或者有一种我不知道的使用互操作的方法?

    非常感谢您的帮助。

    谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   Dmitry Streblechenko    2 年前

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

    MailItem.SaveAs(..., olTxt )将消息另存为文本文件。或者你指的是txt文件中的其他内容?

    如果你的防病毒应用程序不是最新的,Outlook会发出安全提示。如果无法控制代码运行的环境,请使用扩展MAPI(仅限C++或Delphi)或类似的包装器 Redemption (任何语言——我是它的作者)几乎是你唯一的选择。看见 http://www.outlookcode.com/article.aspx?id=52 了解更多详细信息。

    在里面 赎回

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