Aspose.Email FOSS för .NET är ett MIT-licensierat, beroende-fritt C# bibliotek för att arbeta med Microsoft Outlook .msg filer, Compound File Binary (CFB) containrar och EML-meddelanden. Lägg till ett enda NuGet paket och börja omedelbart läsa, skapa och bearbeta e‑postmeddelanden utan att installera Microsoft Outlook eller någon proprietär runtime.
Biblioteket tillhandahåller två åtkomstnivåer. På låg nivå ger CfbReader och CfbWriter full kontroll över CFB binära behållare — traversera katalogposter, läsa och skriva lagringsnoder och strömdata, och inspektera den råa sektlayouten. MsgReader och MsgWriter hanterar MSG-formatet ovanpå CFB, exponerar MAPI‑egenskapsströmmar, mottagartabeller och bilagors sublagringar. På hög nivå låter MapiMessage dig skapa nya meddelanden från grunden, läsa ämne, brödtext, avsändare och mottagare, hantera bilagor och konvertera mellan MSG‑ och EML‑format via en inbyggd MIME‑implementation.
Biblioteket riktar sig mot .NET 8.0 eller senare och har inga inhemska beroenden, vilket gör det lämpligt för Windows, Linux, macOS, Docker‑containrar och serverlösa funktioner. För ytterligare funktioner och kommersiellt stöd, se Aspose.Email for .NET.
CfbReader.FromFile(), CfbReader.FromStream() eller new CfbReader(data).IterStorages(), IterStreams(), IterChildren() och IterTree().ResolvePath(names) för att hitta en specifik ström via namnkedja.CfbDocument och serialisera till byte eller fil via CfbWriter.ToBytes() eller CfbWriter.WriteFile().CfbStorage och CfbStream noder till någon lagringsnod före serialisering..msg-filer — direkt CFB-åtkomst möjliggör forensisk inspektion och reparation.MsgReader.FromFile() eller MsgReader.FromStream() och få åtkomst till de underliggande MAPI‑egenskapsströmmarna, mottagarposterna och bilage‑underlagringsområdena.MsgDocument med MsgWriter.ToBytes() eller MsgWriter.WriteFile().MsgStorage, MsgStream och MsgStorage.FindStream().MsgStorage.FindStream() och MsgStorage.FindStorage() för att hitta namngivna underposter..msg filer från arkivkataloger och extrahera metadata eller bilagor..msg filer programatiskt och leverera dem till Outlook-baserade e‑postsystem.MapiMessage.Create(subject, body), ange SenderName, SenderEmailAddress och HtmlBody.To, Cc och Bcc mottagare via AddRecipient() med e‑postadress och visningsnamn.AddAttachment() eller konstruera MapiAttachment objekt direkt med Filename, MimeType, ContentId och Data.message.Save() eller message.Save(stream) och ladda om med MapiMessage.FromFile() eller MapiMessage.FromStream().message.Attachments, och spara varje attachment.Data till disk.message.Subject, message.Body, message.SenderEmailAddress och message.Recipients utan COM-automation..eml-fil (RFC 5322 / MIME) till ett fullständigt MapiMessage-objekt via MapiMessage.LoadFromEml(stream).MapiMessage tillbaka till MIME-format med message.SaveToEml() eller message.SaveToEml(stream)..eml och .msg filer till ett enda format..eml fixtures i tester och verifiera att de överlever MSG round-trip utan dataförlust.Öppna en Outlook MSG‑fil från en ström och skriv ut ämnet — ingen Microsoft Outlook krävs.
using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
Skapa ett komplett e‑postmeddelande med avsändare, mottagare och bilaga, och skriv sedan det till en MSG‑fil.
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);
Läs in en standard .eml-fil och spara den som en Outlook .msg-fil med den inbyggda MIME‑parsern.
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);