Введение
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 for .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(). Установите тему, тело в простом тексте
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})");
Поддерживаемые форматы
| Формат | Расширение | Чтение | Запись |
|---|---|---|---|
| Составной бинарный файл | .cfb | ✓ | ✓ |
| Сообщение Outlook | .msg | ✓ | ✓ |
| MIME / EML | .eml | ✓ | ✓ |
Открытый исходный код и лицензирование
Aspose.Email FOSS for .NET выпущен под лицензией MIT. Вы можете свободно использовать его в личных, коммерческих и open-source проектах без каких-либо ограничений по использованию. Исходный код доступен по адресу github.com/aspose-email-foss/Aspose.Email-FOSS-for-.Net.