Вступ

Aspose.Email FOSS for .NET — це безкоштовна, з відкритим вихідним кодом бібліотека C#, яка дозволяє працювати з Outlook
MSG‑файлами, контейнерами Compound File Binary (CFB) та повідомленнями EML безпосередньо у вашому .NET
застосунку — без Microsoft Outlook, без COM‑interop і без нативних бібліотек. Розповсюджуйте
її як один пакет NuGet, і вона працює однаково на Windows, Linux, macOS, Docker‑контейнерах,
та безсерверних функціях.

Бібліотека вирішує повторювану проблему в корпоративній та інтеграційній роботі: файли Outlook .msg створюються мільйонами бізнес‑користувачів, але їх розбір без Outlook історично вимагав COM‑автоматизації або дорогих комерційних бібліотек. Aspose.Email FOSS для .NET забезпечує повну підтримку читання/запису для MSG, базового бінарного контейнера CFB та формату EML/MIME — все це під ліцензією MIT без обмежень використання.

Незалежно від того, чи створюєте ви конвеєр архівування електронної пошти, інструмент міграції, екстрактор вкладень або автоматичний генератор MSG, ця бібліотека надає вам прямий, низькорівневий доступ до кожного байта формату електронної пошти разом із високорівневим MapiMessage API, який дозволяє розпочати роботу за кілька хвилин.


Ключові особливості

Читання файлів Outlook 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(). Встановіть тему, plain-text тіло, 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

Файли Outlook MSG створені на основі формату 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 значеннями перерахування. Доступ до метаданих вкладень та бінарних даних здійснюється через
властивості 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})");

Підтримувані формати

ФорматРозширенняЧитанняЗапис
Compound File Binary.cfb
Outlook Message.msg
MIME / EML.eml

Відкритий код і ліцензування

Aspose.Email FOSS for .NET випущено під ліцензією MIT. Ви можете вільно використовувати його в особистих, комерційних та проєктах з відкритим кодом без будь‑яких обмежень щодо використання. Вихідний код доступний за адресою github.com/aspose-email-foss/Aspose.Email-FOSS-for-.Net.


Початок роботи