مقدمه

Aspose.Email FOSS for .NET یک کتابخانه رایگان و متن‌باز C# است که به شما امکان می‌دهد مستقیماً در برنامه .NET خود با فایل‌های Outlook MSG، کانتینرهای Compound File Binary (CFB) و پیام‌های EML کار کنید — بدون Microsoft Outlook، بدون COM interop، و بدون نیاز به کتابخانه‌های بومی. آن را به‌صورت یک بسته NuGet تک توزیع کنید و به‌طور یکسان بر روی Windows، Linux، macOS، کانتینرهای Docker و توابع بدون سرور اجرا می‌شود.

کتابخانه یک مشکل مکرر در کارهای سازمانی و یکپارچه‌سازی را حل می‌کند: فایل‌های Outlook .msg توسط میلیون‌ها کاربر تجاری تولید می‌شوند، اما تجزیه و تحلیل آن‌ها بدون Outlook historically نیاز به خودکارسازی COM یا کتابخانه‌های تجاری گران‌قیمت داشته است. Aspose.Email FOSS for .NET پشتیبانی کامل خواندن/نوشتن برای MSG، کانتینر باینری CFB زیرین، و فرمت EML/MIME را فراهم می‌کند — همه تحت مجوز MIT بدون محدودیت استفاده.

چه در حال ساخت یک خط لوله بایگانی ایمیل، یک ابزار مهاجرت، یک استخراج‌کننده پیوست، یا یک تولیدکننده خودکار MSG باشید، این کتابخانه دسترسی مستقیم و سطح پایین به هر بایت از قالب ایمیل را همراه با یک API سطح بالا MapiMessage فراهم می‌کند که به شما امکان می‌دهد در چند دقیقه شروع کنید.


ویژگی‌های کلیدی

خواندن فایل‌های MSG اوتلوک

هر فایل .msg را از مسیر یا جریان با MsgReader.FromFile() یا MsgReader.FromStream() باز کنید.
دسترسی به جریان ویژگی کامل MAPI، رکوردهای گیرنده و زیرذخیره‌سازی‌های پیوست در سطح بایت خام از طریق MsgStorage و MsgStream.

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 از ابتدا

یک ایمیل کامل را به‌صورت برنامه‌نویسی با استفاده از MapiMessage.Create() بسازید. موضوع، متن ساده
بدنه، بدنه HTML، نام فرستنده، آدرس ایمیل فرستنده، زمان تحویل و شناسه پیام اینترنتی را تنظیم کنید، سپس
گیرندگان را با AddRecipient() و پیوست‌ها را با AddAttachment() اضافه کنید. سریال‌سازی با
message.Save().

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 (و برعکس)

یک فایل استاندارد RFC 5322 .eml را به یک MapiMessage با MapiMessage.LoadFromEml() بارگذاری کنید، سپس آن را به عنوان یک فایل Outlook .msg ذخیره کنید — یا فرآیند را با MapiMessage.SaveToEml() معکوس کنید. پارسر داخلی MIME موضوع، بدنه، بدنه HTML، فرستنده، دریافت‌کنندگان و پیوست‌ها را در طول دورهای کامل EML ↔ MSG حفظ می‌کند.

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

دسترسی سطح پایین به مخزن CFB

فایل‌های MSG در Outlook بر پایه فرمت Compound File Binary (CFB) ساخته شده‌اند — یک مخزن باینری سلسله‌مراتبی مشابه یک سیستم‌فایل. CfbReader درخت کامل دایرکتوری را نمایش می‌دهد: با IterStorages()، IterStreams() و IterChildren() بر روی ذخیره‌سازی‌ها و جریان‌ها تکرار کنید، با ResolvePath() به ورودی‌های خاص از طریق مسیر دسترسی پیدا کنید، و با GetStreamData() بایت‌های خام جریان را بخوانید.

CfbWriter به شما امکان می‌دهد یک سند CFB را از ابتدا بسازید و سریال‌سازی کنید. یک CfbDocument ایجاد کنید، CfbStorage و CfbStream را پیوست کنید، و CfbWriter.ToBytes() یا CfbWriter.WriteFile() را برای سریال‌سازی فراخوانی کنید.

دسترسی به ویژگی‌ها و پیوست‌های MAPI

کلاس MapiPropertyCollection دسترسی به ویژگی‌های MAPI با نوع مشخص را برای هر MSG یا ذخیره‌سازی
شیء: از Get()، Set()، Add() و Remove() همراه با مقادیر استاندارد CommonMessagePropertyId
یا PropertyTypeCode enum استفاده کنید. متادیتا و داده‌های باینری پیوست‌ها را از طریق
ویژگی‌های MapiAttachment: Filename، MimeType، ContentId و Data.


شروع سریع

پکیج را نصب کنید:

dotnet add package Aspose.Email.Foss

موضوع را از یک فایل 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);
Console.WriteLine(message.SenderEmailAddress);
foreach (var recipient in message.Recipients)
    Console.WriteLine($"To: {recipient.EmailAddress}");
foreach (var attachment in message.Attachments)
    Console.WriteLine($"Attachment: {attachment.Filename} ({attachment.MimeType})");

فرمت‌های پشتیبانی‌شده

قالبپسوندخواندننوشتن
فایل ترکیبی باینری.cfb
پیام Outlook.msg
MIME / EML.eml

منبع باز و مجوزدهی

Aspose.Email FOSS برای .NET تحت مجوز MIT منتشر شده است. می‌توانید آن را به‌صورت آزاد در پروژه‌های شخصی، تجاری و منبع باز بدون هیچ محدودیتی استفاده کنید. کد منبع در دسترس است در github.com/aspose-email-foss/Aspose.Email-FOSS-for-.Net.


شروع کار