Aspose.Email FOSS for .NET là một thư viện C# không phụ thuộc, được cấp phép MIT, dùng để làm việc với các tệp Microsoft Outlook .msg, các container Compound File Binary (CFB) và các tin nhắn EML. Thêm một gói NuGet duy nhất và ngay lập tức bắt đầu đọc, tạo và xử lý các tin nhắn email mà không cần cài đặt Microsoft Outlook hay bất kỳ runtime độc quyền nào.
Thư viện cung cấp hai cấp độ truy cập. Ở mức thấp, CfbReader và CfbWriter cho phép kiểm soát đầy đủ các container nhị phân CFB — duyệt các mục thư mục, đọc và ghi các nút lưu trữ và dữ liệu luồng, và kiểm tra bố cục sector thô. MsgReader và MsgWriter xử lý định dạng MSG trên CFB, cung cấp các luồng thuộc tính MAPI, bảng người nhận và các sub‑storage đính kèm. Ở mức cao, MapiMessage cho phép bạn tạo tin nhắn mới từ đầu, đọc tiêu đề, nội dung, người gửi và người nhận, quản lý tệp đính kèm, và chuyển đổi giữa định dạng MSG và EML thông qua một triển khai MIME tích hợp.
Thư viện nhắm tới .NET 8.0 trở lên và không có phụ thuộc native, khiến nó phù hợp cho Windows, Linux, macOS, các container Docker và các hàm serverless.
CfbReader.FromFile(), CfbReader.FromStream(), or new CfbReader(data).IterStorages(), IterStreams(), IterChildren(), and IterTree().ResolvePath(names) to locate a specific stream by name chain.CfbDocument and serialize to bytes or file via CfbWriter.ToBytes() or CfbWriter.WriteFile().CfbStorage and CfbStream nodes to any storage node before serialization..msg files — direct CFB access enables forensic inspection and repair.MsgReader.FromFile() or MsgReader.FromStream() and access the underlying MAPI property streams, recipient records, and attachment sub-storages.MsgDocument with MsgWriter.ToBytes() or MsgWriter.WriteFile().MsgStorage, MsgStream, and MsgReader.ParseTopLevelPropertyStream().MsgStorage.FindStream() and MsgStorage.FindStorage() to locate named sub-entries..msg files from archive directories and extract metadata or attachments..msg files programmatically and deliver them to Outlook-based mail systems.MapiMessage.Create(subject, body), set SenderName, SenderEmailAddress, and HtmlBody.To, Cc, and Bcc recipients via AddRecipient() with email address and display name.AddAttachment() or construct MapiAttachment objects directly with Filename, MimeType, ContentId, and Data.message.Save() or message.Save(stream) and reload with MapiMessage.FromFile() or MapiMessage.FromStream().message.Attachments, and save each attachment.Data to disk.message.Subject, message.Body, message.SenderEmailAddress, and message.Recipients without COM automation..eml file (RFC 5322 / MIME) into a full MapiMessage object via MapiMessage.LoadFromEml(stream).MapiMessage back to MIME format with message.SaveToEml() or message.SaveToEml(stream)..eml and .msg files to a single format..eml fixtures in tests and verify they survive MSG round-trip without data loss.Open an Outlook MSG file from a stream and print the subject — no Microsoft Outlook required.
using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
Build a complete email with sender, recipient, and attachment, then write it to an MSG file.
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);
Load a standard .eml file and save it as an Outlook .msg file using the built-in MIME parser.
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);