Aspose.Email FOSS для .NET — це бібліотека C# з ліцензією MIT, без залежностей, для роботи з файлами Microsoft Outlook .msg, контейнерами Compound File Binary (CFB) та повідомленнями EML. Додайте один пакет NuGet і одразу починайте читати, створювати та обробляти електронні листи без встановлення Microsoft Outlook або будь-якого пропрієтарного середовища виконання.
Бібліотека надає два рівні доступу. На низькому рівні CfbReader і CfbWriter забезпечують повний контроль над CFB binary containers — перебирають записи каталогу, читають і записують вузли сховища та дані потоків, а також інспектують необроблену розкладку секторів. MsgReader і MsgWriter обробляють формат MSG поверх CFB, відкриваючи MAPI property streams, таблиці отримувачів та підсховища вкладень. На високому рівні MapiMessage дозволяє створювати нові повідомлення з нуля, читати тему, тіло, відправника та отримувачів, керувати вкладеннями та конвертувати між MSG і EML format via a built-in MIME implementation.
Бібліотека орієнтована на .NET 8.0 або новішу та не має нативних залежностей, що робить її придатною для Windows, Linux, macOS, Docker‑контейнерів та безсерверних функцій. Для додаткових можливостей та комерційної підтримки дивіться Aspose.Email for .NET.
CfbReader.FromFile(), CfbReader.FromStream() або new CfbReader(data).IterStorages(), IterStreams(), IterChildren() та IterTree().ResolvePath(names), щоб знайти конкретний потік за ланцюжком імен.CfbDocument та серіалізуйте їх у байти або файл за допомогою CfbWriter.ToBytes() або CfbWriter.WriteFile().CfbStorage та CfbStream вузли до будь‑якого вузла сховища перед серіалізацією..msg — прямий доступ до CFB дозволяє проводити судово‑медичну інспекцію та ремонт.MsgReader.FromFile() або MsgReader.FromStream() і отримуйте доступ до базових потоків властивостей MAPI, записів одержувачів та підсховищ вкладень.MsgDocument за допомогою MsgWriter.ToBytes() або MsgWriter.WriteFile().MsgStorage, MsgStream та MsgStorage.FindStream().MsgStorage.FindStream() та MsgStorage.FindStorage(), щоб знайти іменовані підзаписи..msg файли з каталогів архіву та вилучати метадані або вкладення..msg програмно та доставляйте їх у поштові системи на базі Outlook.MapiMessage.Create(subject, body), встановіть SenderName, SenderEmailAddress та HtmlBody.To, Cc та Bcc одержувачів через AddRecipient() з електронною адресою та відображуваним ім’ям.AddAttachment() або створюйте об’єкти MapiAttachment безпосередньо за допомогою Filename, MimeType, ContentId та Data.message.Save() або message.Save(stream) і перезавантажте за допомогою MapiMessage.FromFile() або MapiMessage.FromStream().message.Attachments і збережіть кожен attachment.Data на диск.message.Subject, message.Body, message.SenderEmailAddress та message.Recipients без COM automation..eml (RFC 5322 / MIME) у повний об’єкт MapiMessage за допомогою MapiMessage.LoadFromEml(stream).MapiMessage назад у формат MIME за допомогою message.SaveToEml() або message.SaveToEml(stream)..eml та .msg до єдиного формату..eml фікстури у тестах і перевіряйте, що вони проходять MSG round-trip без втрати даних.Відкрийте файл Outlook MSG з потоку та виведіть тему — без 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);
Створіть повний електронний лист з відправником, одержувачем та вкладенням, а потім запишіть його у файл 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);
Завантажте стандартний файл .eml і збережіть його як файл Outlook .msg, використовуючи вбудований MIME‑парсер.
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);