Search code examples
c#outlookmailmessagemsgeml

How to save MailMesage to .msg file?


I need save a MailMessage to .msg file. In this article have a solution but when I save as .msg file, it does not work in MS Outlook. It only great work when I save as.eml file.
How to save MailMessage object to disk as *.eml or *.msg file

Note that I get when open the .msg file:
Cannot open file: path. The file may not exist, you may not have permission to open it, or it may open in another program. Right-click the folder that contains the file, and then click Properties check your permisstions for the folder.
Thank all.


Solution

  • How exactly are you creating the MSG file? It is completely different from an EML file - see https://stackoverflow.com/questions/16229591/difference-between-a-msg-file-and-a-eml-file/16230261#16230261

    MSG file format is a binary IStorage file, and its format is documented. You can parse your EML (MIME) file and copy one property at a time to a programmatically created MSG file.

    If using Redemption is an option (I am its author), you can use Session.CreateMessageFromMsgFile to create a new MSG file and RDOMail.Import method to import your existing EML file.

      set Session = CreateObject("Redemption.RDOSession")
      set Msg = Session.CreateMessageFromMsgFile("c:\temp\test.msg")
      Msg.Sent = true '//since Import does not copy this property
      Msg.Import("c:\temp\test.eml", 1024) ' //1024 is olRfc822
      Msg.Save