EML 和 MIME 转换

EML 和 MIME 转换

Aspose.Email FOSS for .NET 包含内置的 MIME 解析器和序列化器,因此您可以在标准 .eml 文件(RFC 5322)和 Outlook .msg 文件之间进行转换,而无需任何外部依赖。无需 System.Net.Mail 引用。


将 EML 加载到 MapiMessage

LoadFromEml 接受文件路径、流或字节数组:

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);

加载后,所有标准字段均可用:

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

将 MapiMessage 保存为 EML

SaveToEmlMapiMessage 序列化为 MIME 格式:

// 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 转换

LoadFromEmlSave 组合,以实现完整的 EML 到 MSG 转换:

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

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

MSG → EML 转换

加载现有 MSG 并序列化为 EML:

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

往返保真度

以下字段在 EML → MSG → EML 循环转换中会被保留:

  • 主题、正文和 HTML 正文
  • 发件人姓名和电子邮件地址
  • 所有收件人(收件人、抄送、密送)
  • 文件附件,包括文件名、MIME 类型和内容
  • Internet Message-ID
  • 消息投递时间
// 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

另请参阅

 中文