1. Продукты
  2.   Aspose.Email
  3.   Aspose.Email FOSS for .NET

Aspose.Email FOSS для .NET

Чтение, создание и обработка файлов Outlook MSG, контейнеров CFB и сообщений EML из .NET — бесплатно и с открытым исходным кодом, без зависимости от Microsoft Outlook.

Открытая библиотека .NET для файлов MSG, CFB и EML

Aspose.Email FOSS для .NET — это библиотека C# с лицензией MIT, не требующая зависимостей, для работы с файлами Microsoft Outlook .msg, контейнерами Compound File Binary (CFB) и сообщениями EML. Добавьте один пакет NuGet и сразу начните читать, создавать и обрабатывать электронные сообщения без установки Microsoft Outlook или какого‑либо проприетарного runtime.

Библиотека предоставляет два уровня доступа. На низком уровне CfbReader и CfbWriter дают полный контроль над бинарными контейнерами CFB — обход записей каталога, чтение и запись узлов хранилища и данных потоков, а также просмотр сырой раскладки секторов. MsgReader и MsgWriter обрабатывают формат MSG поверх CFB, предоставляя потоки свойств MAPI, таблицы получателей и подхранилища вложений. На высоком уровне MapiMessage позволяет создавать новые сообщения с нуля, читать тему, тело, отправителя и получателей, управлять вложениями и конвертировать между форматами MSG и EML с помощью встроенной реализации MIME.

Библиотека нацелена на .NET 8.0 или новее и не имеет нативных зависимостей, что делает её подходящей для Windows, Linux, macOS, Docker‑контейнеров и безсерверных функций. Для получения дополнительных возможностей и коммерческой поддержки см. Aspose.Email for .NET.

Чтение и запись контейнеров CFB

  • Open CFB files: Загрузите существующие CFB‑контейнеры из пути к файлу, потока или массива байтов с помощью CfbReader.FromFile(), CfbReader.FromStream() или new CfbReader(data).
  • Обход дерева каталогов: Итерация хранилищ, потоков и дочерних элементов с использованием IterStorages(), IterStreams(), IterChildren() и IterTree().
  • Разрешить пути: Перейдите по вложенным иерархиям хранилища с помощью ResolvePath(names), чтобы найти конкретный поток по цепочке имен.
  • Создание CFB контейнеров: Создавайте CFB‑документы программно с помощью CfbDocument и сериализуйте их в массив байтов или файл через CfbWriter.ToBytes() или CfbWriter.WriteFile().
  • Добавить хранилища и потоки: Присоедините узлы CfbStorage и CfbStream к любому узлу хранилища перед сериализацией.

Где используется доступ CFB

  • Проверка MSG‑файла: CFB — это формат контейнера для файлов Outlook .msg — прямой доступ к CFB позволяет проводить судебно‑экспертную проверку и восстановление.
  • Custom binary formats: Любое устаревшее приложение, использующее CFB для хранения данных, может быть прочитано или записано без зависимости от COM.
  • Восстановление данных: Обойдите полное дерево каталогов и извлеките необработанные байты потока из повреждённых или нестандартных файлов CFB.
  • Binary round-trip testing: Сериализуйте документ в байты и загрузите его заново, чтобы проверить без потерь сериализацию в автоматических тестах.

Чтение и запись файлов MSG

  • Чтение MSG‑файлов: Откройте файлы Outlook MSG с помощью MsgReader.FromFile() или MsgReader.FromStream() и получите доступ к базовым потокам свойств MAPI, записям получателей и вложенным подхранилищам.
  • Создавать файлы MSG: Создавайте файлы MSG из MsgDocument с помощью MsgWriter.ToBytes() или MsgWriter.WriteFile().
  • Низкоуровневый доступ к MAPI: Чтение потоков свойств верхнего уровня, именованных свойств и данных вложений через MsgStorage, MsgStream и MsgStorage.FindStream().
  • Навигация по хранилищу MSG: Используйте MsgStorage.FindStream() и MsgStorage.FindStorage() для поиска именованных подзаписей.

Где используется обработка MSG

  • Email archival pipelines: Массово считывайте файлы .msg из каталогов архива и извлекайте метаданные или вложения.
  • Инструменты миграции: Преобразуйте коллекции MSG в стандартные форматы для импорта в системы, не использующие Outlook.
  • Юридическое раскрытие: Разберите необработанные потоки свойств MAPI, чтобы извлечь все поля сообщения, включая нестандартные свойства.
  • Автоматическая доставка отчетов: Создавайте файлы .msg программно и доставляйте их в почтовые системы на базе Outlook.

API высокого уровня сообщений

  • Создать сообщения: Создайте полное письмо с 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().

Где используется высокоуровневый API

  • Автоматическое создание электронных писем: Создавайте тысячи персонализированных MSG файлов из записей данных в пакетных заданиях.
  • Создание тестовой фикстуры: Создавайте проверенные MSG‑файлы с предсказуемым содержимым для наборов интеграционных тестов.
  • Извлечение вложений: Загрузите файл MSG, пройдите по message.Attachments и сохраните каждое attachment.Data на диск.
  • Проверка свойства: Получите доступ к message.Subject, message.Body, message.SenderEmailAddress и message.Recipients без автоматизации COM.

Конвертация EML и MIME

  • Load EML into MapiMessage: Разобрать стандартный файл .eml (RFC 5322 / MIME) в полноценный объект MapiMessage с помощью MapiMessage.LoadFromEml(stream).
  • Save MapiMessage as EML: Сериализуйте MapiMessage обратно в формат MIME с помощью message.SaveToEml() или message.SaveToEml(stream).
  • Сохранность при обратном преобразовании: Тема, тело, HTML тело, отправитель, получатели и вложения сохраняются при обратных преобразованиях EML → MSG → EML.
  • Нет внешнего MIME‑парсера: разбор EML реализован нативно в библиотеке — зависимость от System.Net.Mail не требуется.

Где используется конвертация EML

  • Переход форматов: Получайте электронные письма в формате EML с почтовых серверов и конвертируйте их в MSG для совместимого с Outlook хранения.
  • Соответствие стандартам: Конвертировать проприетарные файлы MSG в стандартный MIME для доставки в любой почтовый транспорт.
  • Нормализация архива: Приведите смешанный архив файлов .eml и .msg к единому формату.
  • Тестирование рабочих процессов: Создайте .eml фикстуры в тестах и проверьте, что они выживают MSG round-trip без потери данных.

Чтение темы из файла MSG

Откройте файл 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

Создайте полное электронное письмо с отправителем, получателем и вложением, затем запишите его в файл 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 в MSG

Загрузите стандартный файл .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);
  

Ресурсы поддержки и обучения

 Русский