常见问题 — Aspose.Email FOSS for .NET
许可
Aspose.Email.Foss 使用什么许可证?
MIT 许可证。无需许可证密钥。可在个人、商业和开源项目中自由使用。
安装
如何安装 Aspose.Email.Foss?
dotnet add package Aspose.Email.Foss需要哪个 .NET 版本?
.NET 8.0 或更高版本。该库不支持 .NET Framework 或 .NET Standard。
是否有本机依赖?
不。该库是纯托管的 C#,没有本机依赖。它在 Windows、Linux、macOS、Docker 和无服务器环境中表现完全相同。
格式支持
支持哪些电子邮件格式?
| 格式 | 读取 | 写入 |
|---|---|---|
| MSG (Outlook) | ✓ | ✓ |
| CFB (Compound File Binary) | ✓ | ✓ |
| EML (MIME / RFC 5322) | ✓ | ✓ |
我可以读取 EML 文件吗?
是的。使用 MapiMessage.LoadFromEml(stream) 将标准的 .eml 文件加载到一个MapiMessage。内置的 MIME 解析器能够处理折叠的标题、base64 内容以及
multipart 消息。
我可以将 MSG 转换为 EML 吗?
是的。调用 message.SaveToEml() 进行内存中的 byte[] 输出,或message.SaveToEml(stream) 将其写入文件。主题、正文、HTML 正文、发件人、
收件人以及所有附件均会被保留。
是否支持 TNEF(winmail.dat)?
不。仅支持标准的 MSG (CFB) 和 EML (MIME) 格式。
是否支持 IMAP/SMTP/POP3?
不。该库直接处理 MSG 文件,不包含任何网络/协议层。
API 使用
如何加载 MSG 文件?
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("message.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);如何创建新消息?
var message = MapiMessage.Create("Subject", "Body");
message.SenderEmailAddress = "alice@example.com";
message.AddRecipient("bob@example.com", "Bob");
message.Save("output.msg");我该如何添加附件?
// From byte array
message.AddAttachment("file.pdf", pdfBytes, "application/pdf");
// From stream
using var stream = File.OpenRead("photo.png");
message.AddAttachment("photo.png", stream, "image/png");如何将 EML 转换为 MSG?
using var eml = File.OpenRead("message.eml");
var message = MapiMessage.LoadFromEml(eml);
message.Save("message.msg");我如何访问原始 CFB 结构?
using Aspose.Email.Foss.Cfb;
using var reader = CfbReader.FromFile("message.msg");
foreach (var entry in reader.IterChildren(CfbConstants.RootStreamId))
Console.WriteLine(entry.Name);已知限制
有没有未实现的方法?
当前版本中不存在有意未实现的存根。
是否提供日历/预约支持?
该库通用地处理 MSG 文件。可以通过 SetProperty() / GetPropertyValue() 使用来自 CommonMessagePropertyId 的 MAPI 属性 ID 访问特定于日历的属性,但没有专用的日历或约会 API。
是否保证线程安全?
每个 MapiMessage 和 CfbReader 实例都是独立的。并发访问到分离的
来自不同线程的实例是安全的。不要在多个线程之间共享单个实例
在没有外部同步的情况下。