EML and MIME Conversion

EML and MIME Conversion

Aspose.Email FOSS for .NET includes a built-in MIME parser and serializer, so you can convert between standard .eml files (RFC 5322) and Outlook .msg files without any external dependencies. No System.Net.Mail reference is needed.


Load EML into MapiMessage

LoadFromEml accepts a file path, stream, or byte array:

using System.IO;
using Aspose.Email.Foss.Msg;

// From file path
var message = MapiMessage.LoadFromEml("incoming.eml");

// From stream
using var stream = File.OpenRead("incoming.eml");
var message2 = MapiMessage.LoadFromEml(stream);

// From byte array
var emlBytes = File.ReadAllBytes("incoming.eml");
var message3 = MapiMessage.LoadFromEml(emlBytes);

After loading, all standard fields are available:

Console.WriteLine(message.Subject);
Console.WriteLine(message.SenderEmailAddress);
Console.WriteLine(message.Recipients.Count);
Console.WriteLine(message.Attachments.Count);
Console.WriteLine(message.HtmlBody);

Save MapiMessage as EML

SaveToEml serializes a MapiMessage to MIME format:

// To file path
message.SaveToEml("output.eml");

// To stream
using var outStream = File.Create("output.eml");
message.SaveToEml(outStream);

// To byte array
byte[] emlData = message.SaveToEml();

EML → MSG Conversion

Combine LoadFromEml and Save for a full EML-to-MSG conversion:

using System.IO;
using Aspose.Email.Foss.Msg;

var message = MapiMessage.LoadFromEml("incoming.eml");
message.Save("converted.msg");

MSG → EML Conversion

Load an existing MSG and serialize as EML:

using var message = MapiMessage.FromFile("original.msg");
message.SaveToEml("exported.eml");

Round-Trip Fidelity

The following fields are preserved through EML → MSG → EML round-trips:

  • Subject, body, and HTML body
  • Sender name and email address
  • All recipients (To, Cc, Bcc)
  • File attachments with filename, MIME type, and content
  • Internet Message-ID
  • Message delivery time
// Verify round-trip
var original = MapiMessage.LoadFromEml("test.eml");
original.Save("test.msg");

using var reloaded = MapiMessage.FromFile("test.msg");
reloaded.SaveToEml("roundtrip.eml");

// Compare: original.eml and roundtrip.eml should have
// matching Subject, From, To, and attachment count

See Also

 English