1. 产品
  2.   Aspose.Email
  3.   Aspose.Email FOSS for .NET

Aspose.Email FOSS for .NET

读取、创建和处理 Outlook MSG 文件、CFB 容器以及来自 .NET 的 EML 消息——免费开源,无需 Microsoft Outlook 依赖。

开源.NET库为MSG,CFB和EML文件

对于NET的FOSS是一个MIT许可证,无依赖性C#库用于与Microsoft Outlook.msg文件,复合文件二进制 (CFB)容器和EML消息工作.添加一个NuGet包并立即开始阅读,创建和处理电子邮件信息而不需要安装微软Outlook或任何专有运行时间.

库提供两个访问层次.在低级,CfbReaderCfbWriter给你完全控制 CFB 二进制容器横向目录条款,阅读和写存储节点和流数据,并检查原始部门布局.MsgReaderMsgWriter处理MSG格式的CFB上方,暴露了MAPI属性流,接收者表和附件子存放. 在高级中, MapiMessage让您从头开始创建新的消息,通过内置的MIME实现,读取,体,发送者和接件人,管理附加文件以及转换MS G 和 EMLIME格形式.

该库针对 .NET 8.0 或更新的版本,没有本地依赖性,因此适用于Windows,Linux,macOS,Docker容器和无服务器功能. 更多功能和商业支持请参阅Aspose.Email for .NET.

读写CFB容器

  • 打开 CFB 文件: 通过 CfbReader.FromFile()CfbReader.FromStream()new CfbReader(data) 从文件路径、流或字节数组加载现有的 CFB 容器。
  • 遍历目录树: 使用 IterStorages()IterStreams()IterChildren()IterTree() 迭代存储、流和子项。
  • 解析路径: 使用 ResolvePath(names) 在嵌套的存储层次结构中导航,以通过名称链定位特定的流。
  • 写入 CFB 容器: 使用 CfbDocument 编程构建 CFB 文档,并通过 CfbWriter.ToBytes()CfbWriter.WriteFile() 将其序列化为字节或文件。
  • 添加存储和流: 在序列化之前,将 CfbStorageCfbStream 节点附加到任意存储节点。

使用CFB访问的位置

  • MSG文件检查: CFB是Outlook .msg 文件的容器格式.
  • ** 定制二进制格式:**任何使用CFB为数据存储的传统应用程序都可以在没有COM依赖的情况下读或写.
  • 数据恢复: 浏览完整目录树,并从受损或非标准 CFB文件中提取原始流字节.
  • **二进制回程测试:**将文档串行到字节中,然后重新加载它以验证自动化测試中的无损序列.

读写文件

  • **阅读MSG文件:**使用MsgReader.FromFile()MsgReader.FromStream()打开Outlook MSG 文件,并访问底层MAPI属性流,接收者记录和附件子存储.
  • **写MSG文件:**使用MsgWriter.ToBytes()MsgWriter.WriteFile().从一个MsgDocument生成MS G文件.
  • **低级 MAPI 访问:**通过 MsgStorage,MsgStreamMsgStorage.FindStream()阅读顶级属性流,命名的属性的数据.
  • **MSG存储导航:**使用MsgStorage.FindStream()MsgStorage.FindStorage()来查找命名的子条目.

在哪里使用MSG加工方法?

  • **电子邮件档案管道:**从档次目录中大量阅读.msg 文件,并提取元数据或附件.
  • **迁移工具:**将MSG集合转换为标准格式,以便导入非Outlook系统.
  • **法律发现:**分析原始MAPI属性流,以提取包括非标准属性的所有消息字段.
  • 自动报告交付: 程序化构建.msg文件并将其传送到基于Outlook的邮件系统.

高级消息API

  • 创建消息: 使用 MapiMessage.Create(subject, body) 构建完整的电子邮件,设置 SenderNameSenderEmailAddressHtmlBody
  • 添加收件人: 通过 AddRecipient() 附加 ToCcBcc 收件人,并提供电子邮件地址和显示名称。
  • 管理附件: 使用 AddAttachment() 添加文件和流附件,或直接使用 FilenameMimeTypeContentIdData 构造 MapiAttachment 对象。
  • 保存并重新加载: 使用 message.Save()message.Save(stream) 序列化,并使用 MapiMessage.FromFile()MapiMessage.FromStream() 重新加载。

高级API使用的地方

  • 自动化电子邮件生成: 从数据记录中批量生成数千个个性化的 MSG 文件。
  • 测试夹具创建: 为集成测试套件构建已知良好的 MSG 文件,内容可预测。
  • 附件提取: 加载 MSG 文件,遍历 message.Attachments,并将每个 attachment.Data 保存到磁盘。
  • 属性检查: 在不使用 COM 自动化的情况下访问 message.Subjectmessage.Bodymessage.SenderEmailAddressmessage.Recipients

转换EML和MIME

  • **将EML加载到MapiMessage:**通过MapiMessage.LoadFromEml(stream)解析一个标准的 .eml 文件 (RFC 5322 / MIME) 到一个完整的MapiMessage 对象.
  • 将MapiMessage保存为EML:MapiMessage 串行回到 MIME格式,使用 message.SaveToEml()message.SaveToEml(stream).
  • **回程忠实性:**主题,体,HTML体和附件都通过EML → MSG → EML回路保存.
  • 没有外部MIME解析器: EML解析在库内实现了本地操作 不需要系统.网络.邮件依赖性.

在哪里使用EML转换?

  • 格式交叉: 收到电子邮件作为EML从邮箱服务器和转换为MSG对Outlook兼容存储.
  • ** 符合标准:** 将专有MSG文件转换为标准MIME,以便向任何邮件运输.
  • ** 档案规范:** 将.eml.msg文件的混合档次标准化为一个格式.
  • 测试工作流程: 在测验中生成.eml 固定件,并确认它们能够在MSG的回路过程中存活下来而不损失数据.

读取主题从MSG文件中

从流中打开 Outlook 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);

创建和保存MSG消息

建立一个完整的电子邮件,发送者,收件人和附件,然后写入MSG文件.

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

运载一个标准的.eml文件并使用内置MIME解析器将其保存为Outlook .msg file.

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

支持和学习资源

 中文