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 countSee Also
- Reading MSG Files — Load and inspect MSG files
- Features — Full feature reference
- MAPI Properties — Low-level property access