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