Aspose.Email FOSS dla .NET to biblioteka C# na licencji MIT, wolna od zależności, służąca do pracy z plikami Microsoft Outlook .msg, kontenerami Compound File Binary (CFB) oraz wiadomościami EML. Dodaj pojedynczy pakiet NuGet i od razu zacznij odczytywać, tworzyć i przetwarzać wiadomości e‑mail bez instalowania Microsoft Outlook ani żadnego własnościowego środowiska uruchomieniowego.
Biblioteka zapewnia dwa poziomy dostępu. Na niskim poziomie CfbReader i CfbWriter dają pełną kontrolę nad binarnymi kontenerami CFB — przeglądanie wpisów katalogu, odczyt i zapis węzłów magazynu oraz danych strumieni, oraz inspekcję surowego układu sektorów. MsgReader i MsgWriter obsługują format MSG na bazie CFB, udostępniając strumienie właściwości MAPI, tabele odbiorców i podmagazyny załączników. Na wysokim poziomie MapiMessage pozwala tworzyć nowe wiadomości od podstaw, odczytywać temat, treść, nadawcę i odbiorców, zarządzać załącznikami oraz konwertować między formatami MSG i EML za pomocą wbudowanej implementacji MIME.
Biblioteka jest przeznaczona dla .NET 8.0 lub nowszego i nie ma zależności natywnych, co czyni ją odpowiednią dla systemów Windows, Linux, macOS, kontenerów Docker oraz funkcji serverless. Aby uzyskać dodatkowe funkcje i wsparcie komercyjne, zobacz Aspose.Email for .NET.
CfbReader.FromFile(), CfbReader.FromStream() lub new CfbReader(data).IterStorages(), IterStreams(), IterChildren() i IterTree().ResolvePath(names), aby zlokalizować określony strumień według łańcucha nazw.CfbDocument i serializuj do bajtów lub pliku za pomocą CfbWriter.ToBytes() lub CfbWriter.WriteFile().CfbStorage i CfbStream do dowolnego węzła magazynu przed serializacją..msg — bezpośredni dostęp do CFB umożliwia forensyczną inspekcję i naprawę.MsgReader.FromFile() lub MsgReader.FromStream() i uzyskaj dostęp do podstawowych strumieni właściwości MAPI, rekordów odbiorców oraz podmagazynów załączników.MsgDocument przy użyciu MsgWriter.ToBytes() lub MsgWriter.WriteFile().MsgStorage, MsgStream i MsgStorage.FindStream().MsgStorage.FindStream() i MsgStorage.FindStorage(), aby zlokalizować nazwane pod‑pozycje..msg z katalogów archiwum i wyodrębniaj metadane lub załączniki..msg programowo i dostarczaj je do systemów pocztowych opartych na Outlooku.MapiMessage.Create(subject, body), ustaw SenderName, SenderEmailAddress i HtmlBody.To, Cc i Bcc odbiorców poprzez AddRecipient() z adresem e‑mail i nazwą wyświetlaną.AddAttachment() lub utwórz obiekty MapiAttachment bezpośrednio przy użyciu Filename, MimeType, ContentId i Data.message.Save() lub message.Save(stream) i wczytaj przy użyciu MapiMessage.FromFile() lub MapiMessage.FromStream().message.Attachments i zapisz każdy attachment.Data na dysku.message.Subject, message.Body, message.SenderEmailAddress i message.Recipients bez automatyzacji COM..eml (RFC 5322 / MIME) i przekształć go w pełny obiekt MapiMessage za pomocą MapiMessage.LoadFromEml(stream).MapiMessage z powrotem do formatu MIME przy użyciu message.SaveToEml() lub message.SaveToEml(stream)..eml i .msg do jednego formatu..eml fixture’y w testach i zweryfikuj, że przetrwają one cykl MSG bez utraty danych.Otwórz plik Outlook MSG ze strumienia i wydrukuj temat — nie wymaga 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);
Utwórz kompletną wiadomość e‑mail z nadawcą, odbiorcą i załącznikiem, a następnie zapisz ją do pliku 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);
Wczytaj standardowy plik .eml i zapisz go jako plik Outlook .msg przy użyciu wbudowanego parsera 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);