FOSS for .NET là một thư viện C # miễn phí, được cấp phép MIT để làm việc với các tệp Microsoft Outlook .msg , chứa Compound File Binary (CFB) và 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ý tin email mà không cần cài đặt Microsoft Excel hoặc bất kỳ thời gian chạy độc quyền nào.
Thư viện cung cấp hai mức truy cập. Ở cấp thấp, CfbReader và CfbWriter cho phép kiểm soát đầy đủ các container nhị phân CFB mục thư mục chéo, đọc và viết nút lưu trữ và dữ liệu dòng, và kiểm tra bố cục lĩnh vực thô. MsgReader and MsgWriter xử lý định dạng MSG trên đầu của CF B , phơi bày luồng tài sản MAPI, bảng người nhận và bộ nhớ phụ tệp đính kèm. ở cấp cao,MapiMessage cho bạn tạo tin nhắn mới từ đầu, read, body, sender, subject, and recipients, manage attachments, convert between MS G và EMLIME format via built-in implementation of MIME .
Thư viện nhắm mục tiêu vào .NET 8.0 hoặc sau đó và không có phụ thuộc bản địa, làm cho nó phù hợp với Windows, Linux, macOS, Docker container và các chức năng serverless. Để biết thêm tính năng và hỗ trợ thương mại, hãy xem Aspose.Email for .NET.
CfbReader.FromFile(), CfbReader.FromStream() hay new CfbReader(data).IterStorages(), IterStreams(),IterChildren() và IterTree().ResolvePath(names) để xác định vị trí một dòng cụ thể theo chuỗi tên.CfbDocument và sắp xếp thành byte hoặc file thông qua CfbWriter.ToBytes() hay CfbWriter.WriteFile().CfbStorage và CfbStream nút vào bất kỳ nút lưu giữ nào trước khi nối hàng..msg file truy cập trực tiếp vào CF B có thể kiểm tra pháp y và sửa chữa.MsgReader.FromFile() hoặc MsgReader.FromStream() và truy cập vào luồng thuộc tính MAPI cơ bản, hồ sơ người nhận và lưu trữ phụ đính kèm.MsgDocument với MsgWriter.ToBytes() hoặc MsgWriter.WriteFile().MsgStorage, MsgStream và MsgStorage.FindStream().MsgStorage.FindStream() và MsgStorage.FindStorage() để xác định vị trí tên của các mục con..msg tệp từ thư mục lưu giữ và trích xuất siêu dữ liệu hoặc các tập tin đính kèm..msg tập tin theo chương trình và cung cấp cho 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 thông qua AddRecipient() với địa chỉ email và tên hiển thị.AddAttachment() hoặc xây dựng đối tượng MapiAttachment trực tiếp bằng Filename, MimeType , ContentId và Data.message.Save() hoặc message.Save(stream) và nạp lại bằng MapiMessage.FromFile() hay MapiMessage.FromStream().message.Attachments và lưu từng attachment.Data vào đĩa.message.Subject, message.Body , message.SenderEmailAddress và message.Recipients mà không có tự động hóa COM..eml tiêu chuẩn (RFC 5322 / MIME) thành một đối tượng MapiMessage đầy đủ thông qua MapiMessage.LoadFromEml(stream).MapiMessage back to MIME format with message.SaveToEml() or 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 MSG vòng hành mà không mất dữ liệu.Mở một tập tin Outlook MSG từ dòng và in chủ đề 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 đó viết nó vào tập tin 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 tin .eml tiêu chuẩn và lưu nó như là Outlook .msg sử dụng trình phân tích MIME được xây dựng.
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);