介绍

Aspose.Email FOSS for .NET 是一个免费、开源的 C# 库,允许您在 .NET 应用程序中直接处理 Outlook MSG 文件、复合文件二进制(CFB)容器和 EML 消息——无需 Microsoft Outlook、无需 COM 互操作,也不需要本机库。将其作为单个 NuGet 包分发,它在 Windows、Linux、macOS、Docker 容器和无服务器函数上运行完全相同。

该库解决了企业和集成工作中反复出现的问题:Outlook .msg 文件由数百万业务用户生成,但在没有 Outlook 的情况下解析这些文件历来需要 COM 自动化或昂贵的商业库。Aspose.Email FOSS for .NET 提供对 MSG、底层 CFB 二进制容器以及 EML/MIME 格式的完整读写支持——全部在 MIT 许可证下,无使用限制。

无论您是构建电子邮件归档流水线、迁移工具、附件提取器,
或自动化 MSG 生成器,该库为您提供对电子邮件格式每个字节的直接、低层访问,
以及高层 MapiMessage API,让您在几分钟内即可上手。


关键特性

读取 Outlook MSG 文件

使用 MsgReader.FromFile()MsgReader.FromStream() 从路径或流打开任何 .msg 文件。
通过 MsgStorageMsgStream 在原始字节级别
访问完整的 MAPI 属性流、收件人记录和附件子存储。

using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");

var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);

从头创建 MSG 文件

使用 MapiMessage.Create() 编程构建完整的电子邮件。设置主题、纯文本 正文、HTML 正文、发件人姓名、发件人电子邮件地址、发送时间和互联网消息 ID,然后 使用 AddRecipient() 添加收件人并使用 AddAttachment() 添加附件。使用 message.Save() 序列化。

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

var message = MapiMessage.Create("Hello", "Body");
message.SenderName = "Alice";
message.SenderEmailAddress = "alice@example.com";
message.AddRecipient("bob@example.com", "Bob");
using var attachmentStream = new MemoryStream("abc"u8.ToArray());
message.AddAttachment("note.txt", attachmentStream, "text/plain");
using var output = File.Create("hello.msg");
message.Save(output);

将 EML 转换为 MSG(以及反向转换)

加载标准 RFC 5322 .eml 文件到 MapiMessage 中使用 MapiMessage.LoadFromEml()
然后将其保存为 Outlook .msg 文件 — 或者使用 MapiMessage.SaveToEml() 进行反向操作。
内置的 MIME 解析器在完整的 EML ↔ MSG 循环中保留主题、正文、HTML 正文、发件人、收件人和附件。

using System.IO;
using Aspose.Email.Foss.Msg;
using var input = File.OpenRead("message.eml");

var message = MapiMessage.LoadFromEml(input);
using var msgOutput = File.Create("message.msg");
message.Save(msgOutput);
using var emlOutput = File.Create("roundtrip.eml");
message.SaveToEml(emlOutput);

低级 CFB 容器访问

Outlook MSG 文件基于复合文件二进制(CFB)格式——一种类似文件系统的层次二进制容器。CfbReader 展示完整的目录树:使用 IterStorages()IterStreams()IterChildren() 迭代存储和流,通过 ResolvePath() 按路径导航到特定条目,并使用 GetStreamData() 读取原始流字节。

CfbWriter 让您从头构建并序列化 CFB 文档。创建一个 CfbDocument,附加 CfbStorageCfbStream 节点,然后调用 CfbWriter.ToBytes()CfbWriter.WriteFile() 进行序列化。

MAPI 属性和附件访问

MapiPropertyCollection 类提供对任何 MSG 或存储
对象:使用 Get()Set()Add()Remove() 与标准 CommonMessagePropertyId
PropertyTypeCode 枚举值。通过
MapiAttachment 属性:FilenameMimeTypeContentIdData


快速入门

安装软件包:

dotnet add package Aspose.Email.Foss

从 MSG 文件读取主题:

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

using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
Console.WriteLine(message.SenderEmailAddress);
foreach (var recipient in message.Recipients)
    Console.WriteLine($"To: {recipient.EmailAddress}");
foreach (var attachment in message.Attachments)
    Console.WriteLine($"Attachment: {attachment.Filename} ({attachment.MimeType})");

支持的格式

格式扩展名读取写入
Compound File Binary.cfb
Outlook Message.msg
MIME / EML.eml

开源与许可

Aspose.Email FOSS for .NET 在 MIT 许可证 下发布。您可以在
个人、商业和开源项目中自由使用它,且没有使用限制。源代码可在
github.com/aspose-email-foss/Aspose.Email-FOSS-for-.Net


入门