Aspose.Email FOSS for .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 прямой доступ к CF B позволяет проводить судебную проверку и ремонт.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-поездку без потери данных.Откройте файл 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);