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
SaveToEml 将 MapiMessage 序列化为 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 转换
将 LoadFromEml 和 Save 组合,以实现完整的 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另请参阅
- Reading MSG Files — 加载并检查 MSG 文件
- Features — 完整功能参考
- MAPI Properties — 低级属性访问