Aspose.Email FOSS cho .NET là một thư viện C# được cấp phép MIT, không phụ thuộc, dùng để làm việc với các tệp .msg của Microsoft Outlook, 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 hoặc bất kỳ môi trường chạy độ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, hiển thị 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 triển khai MIME tích hợp.
Thư viện nhắm mục tiêu .NET 8.0 trở lên và không có phụ thuộc gốc, khiến nó phù hợp cho Windows, Linux, macOS, các container Docker và các hàm không máy chủ. Để biết thêm tính năng và hỗ trợ thương mại, xem Aspose.Email for .NET.
CfbReader.FromFile(), CfbReader.FromStream() hoặc new CfbReader(data).IterStorages(), IterStreams(), IterChildren() và IterTree().ResolvePath(names) để xác định một luồng cụ thể bằng chuỗi tên.CfbDocument và tuần tự hoá thành byte hoặc tệp qua CfbWriter.ToBytes() hoặc CfbWriter.WriteFile().CfbStorage và CfbStream vào bất kỳ nút lưu trữ nào trước khi tuần tự hoá..msg — truy cập CFB trực tiếp cho phép kiểm tra pháp y và sửa chữa.MsgReader.FromFile() hoặc MsgReader.FromStream() và truy cập các luồng thuộc tính MAPI, bản ghi người nhận và các sub-storage đính kèm.MsgDocument với MsgWriter.ToBytes() hoặc MsgWriter.WriteFile().MsgStorage, MsgStream và MsgStorage.FindStream().MsgStorage.FindStream() và MsgStorage.FindStorage() để định vị các mục phụ có tên..msg từ các thư mục lưu trữ và trích xuất siêu dữ liệu hoặc tệp đính kèm..msg một cách lập trình và chuyển chúng tới các hệ thống thư dựa trên Outlook.MapiMessage.Create(subject, body), thiết lập SenderName, SenderEmailAddress, và HtmlBody.To, Cc và Bcc qua AddRecipient() với địa chỉ email và tên hiển thị.AddAttachment() hoặc tạo các đối tượng MapiAttachment trực tiếp với Filename, MimeType, ContentId và Data.message.Save() hoặc message.Save(stream) và tải lại với MapiMessage.FromFile() hoặc MapiMessage.FromStream().message.Attachments, và lưu mỗi attachment.Data vào đĩa.message.Subject, message.Body, message.SenderEmailAddress và message.Recipients mà không cần COM automation..eml tiêu chuẩn (RFC 5322 / MIME) thành một đối tượng MapiMessage đầy đủ thông qua MapiMessage.LoadFromEml(stream).MapiMessage trở lại định dạng MIME với message.SaveToEml() hoặc message.SaveToEml(stream)..eml và .msg thành một định dạng duy nhất..eml trong các bài kiểm tra và xác minh chúng tồn tại qua vòng quay MSG mà không mất dữ liệu.Mở tệp Outlook MSG từ một luồng và in tiêu đề — không cần Microsoft Outlook.
using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
Tạo một email hoàn chỉnh với người gửi, người nhận và tệp đính kèm, sau đó ghi nó vào tệp 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);
Tải một tệp .eml tiêu chuẩn và lưu nó dưới dạng tệp Outlook .msg bằng cách sử dụng bộ phân tích MIME tích hợp.
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);