1. Produkte
  2.   Aspose.Email
  3.   Aspose.Email FOSS for .NET

Aspose.Email FOSS für .NET

Lesen, Erstellen und Verarbeiten von Outlook‑MSG‑Dateien, CFB‑Containern und EML‑Nachrichten mit .NET — kostenlos und Open‑Source, ohne Microsoft‑Outlook‑Abhängigkeit.

Open-Source .NET-Bibliothek für MSG-, CFB- und EML-Dateien

Aspose.Email FOSS für .NET ist eine MIT-lizenzierte, abhängigkeitfreie C# Bibliothek zum Arbeiten mit Microsoft Outlook .msg Dateien, Compound File Binary (CFB) Containern und EML-Nachrichten. Fügen Sie ein einziges NuGet Paket hinzu und beginnen Sie sofort mit dem Lesen, Erstellen und Verarbeiten von E‑Mail‑Nachrichten, ohne Microsoft Outlook oder eine proprietäre Laufzeit zu installieren.

Die Bibliothek bietet zwei Zugriffsebenen. Auf der niedrigen Ebene geben CfbReader und CfbWriter die volle Kontrolle über CFB‑Binärcontainer — Verzeichniseinträge durchlaufen, Speicherknoten und Stream‑Daten lesen und schreiben sowie das rohe Sektor‑Layout inspizieren. MsgReader und MsgWriter verarbeiten das MSG‑Format auf CFB‑Basis und stellen MAPI‑Eigenschafts‑Streams, Empfängertabellen und Anhang‑Unter‑speicher bereit. Auf der hohen Ebene ermöglicht MapiMessage das Erstellen neuer Nachrichten von Grund auf, das Lesen von Betreff, Text, Absender und Empfängern, das Verwalten von Anhängen und die Konvertierung zwischen MSG‑ und EML‑Format über eine integrierte MIME‑Implementierung.

Die Bibliothek zielt auf .NET 8.0 oder höher ab und hat keine nativen Abhängigkeiten, wodurch sie für Windows, Linux, macOS, Docker‑Container und serverlose Funktionen geeignet ist. Für zusätzliche Funktionen und kommerziellen Support siehe Aspose.Email for .NET.

CFB‑Container Lesen und Schreiben

  • CFB-Dateien öffnen: Laden Sie vorhandene CFB-Container von einem Dateipfad, Stream oder Byte-Array über CfbReader.FromFile(), CfbReader.FromStream() oder new CfbReader(data).
  • Durchlaufen des Verzeichnisbaums: Iterieren Sie Speicher, Streams und Kinder mit IterStorages(), IterStreams(), IterChildren() und IterTree().
  • Pfade auflösen: Navigieren Sie durch verschachtelte Speicherhierarchien mit ResolvePath(names), um einen bestimmten Stream anhand einer Namenskette zu finden.
  • CFB-Container schreiben: Erstellen Sie CFB-Dokumente programmgesteuert mit CfbDocument und serialisieren Sie sie in Bytes oder in eine Datei über CfbWriter.ToBytes() oder CfbWriter.WriteFile().
  • Speicher und Streams hinzufügen: Hängen Sie CfbStorage und CfbStream Knoten an einen beliebigen Speicherknoten vor der Serialisierung an.

Wo CFB-Zugriff verwendet wird

  • MSG-Datei-Inspektion: CFB ist das Containerformat für Outlook .msg-Dateien — direkter CFB-Zugriff ermöglicht forensische Inspektion und Reparatur.
  • Benutzerdefinierte Binärformate: Jede Legacy-Anwendung, die CFB für die Datenspeicherung verwendet, kann ohne COM-Abhängigkeit gelesen oder geschrieben werden.
  • Datenwiederherstellung: Durchsuchen Sie den gesamten Verzeichnisbaum und extrahieren Sie rohe Stream‑Bytes aus beschädigten oder nicht standardmäßigen CFB‑Dateien.
  • Binary round-trip testing: Serialisieren Sie ein Dokument in Bytes und laden Sie es erneut, um die verlustfreie Serialisierung in automatisierten Tests zu überprüfen.

MSG‑Datei Lesen und Schreiben

  • Read MSG files: Öffnen Sie Outlook‑MSG‑Dateien mit MsgReader.FromFile() oder MsgReader.FromStream() und greifen Sie auf die zugrunde liegenden MAPI‑Eigenschafts‑Streams, Empfänger‑Datensätze und Anhang‑Unter‑Speicher zu.
  • Write MSG files: Erstellen Sie MSG-Dateien aus einem MsgDocument mit MsgWriter.ToBytes() oder MsgWriter.WriteFile().
  • Low-level MAPI-Zugriff: Lese Top-Level-Property-Streams, benannte Eigenschaften und Anhangsdaten über MsgStorage, MsgStream und MsgStorage.FindStream().
  • MSG storage navigation: Verwenden Sie MsgStorage.FindStream() und MsgStorage.FindStorage(), um benannte Untereinträge zu finden.

Wo die MSG-Verarbeitung verwendet wird

  • E-Mail-Archivierungspipelines: Bulk-read .msg Dateien aus Archivverzeichnissen lesen und Metadaten oder Anhänge extrahieren.
  • Migrationswerkzeuge: Konvertieren Sie MSG‑Sammlungen in Standardformate für den Import in Nicht‑Outlook‑Systeme.
  • Rechtliche Entdeckung: Roh-MAPI-Property-Streams analysieren, um alle Nachrichtenfelder einschließlich nicht standardmäßiger Eigenschaften zu extrahieren.
  • Automatisierte Berichtszustellung: Erstellen Sie .msg-Dateien programmgesteuert und liefern Sie sie an Outlook-basierte Mailsysteme.

High-Level-Nachrichten-API

  • Nachrichten erstellen: Erstellen Sie eine vollständige E‑Mail mit MapiMessage.Create(subject, body), setzen Sie SenderName, SenderEmailAddress und HtmlBody.
  • Empfänger hinzufügen: Fügen Sie To, Cc und Bcc Empfänger über AddRecipient() mit E‑Mail‑Adresse und Anzeigenamen hinzu.
  • Anhänge verwalten: Fügen Sie Datei‑ und Stream‑Anhänge mit AddAttachment() hinzu oder konstruieren Sie MapiAttachment-Objekte direkt mit Filename, MimeType, ContentId und Data.
  • Speichern und neu laden: Serialisieren mit message.Save() oder message.Save(stream) und neu laden mit MapiMessage.FromFile() oder MapiMessage.FromStream().

Wo die High-Level-API verwendet wird

  • Automatisierte E-Mail-Generierung: Erzeugen Sie Tausende personalisierter MSG-Dateien aus Datenaufzeichnungen in Batch-Jobs.
  • Testfixture-Erstellung: Erstelle bekannte, funktionierende MSG-Dateien mit vorhersehbarem Inhalt für Integrationstest‑Suiten.
  • Anhangsextraktion: Laden Sie eine MSG-Datei, iterieren Sie message.Attachments und speichern Sie jeden attachment.Data auf die Festplatte.
  • Property inspection: Zugriff auf message.Subject, message.Body, message.SenderEmailAddress und message.Recipients ohne COM automation.

EML- und MIME-Konvertierung

  • EML in MapiMessage laden: Paren Sie eine standardmäßige .eml-Datei (RFC 5322 / MIME) in ein vollständiges MapiMessage-Objekt über MapiMessage.LoadFromEml(stream).
  • MapiMessage als EML speichern: Serialisieren Sie ein MapiMessage zurück ins MIME-Format mit message.SaveToEml() oder message.SaveToEml(stream).
  • Rundreise-Treue: Betreff, Body, HTML Body, Absender, Empfänger und Anhänge bleiben bei EML → MSG → EML round-trips erhalten.
  • Kein externer MIME-Parser: EML-Parsing wird nativ in der Bibliothek implementiert — keine System.Net.Mail-Abhängigkeit erforderlich.

Wo die EML-Konvertierung verwendet wird

  • Format bridging: Empfangen Sie E-Mails als EML von Mail-Servern und konvertieren Sie sie in MSG für Outlook-kompatible Speicherung.
  • Standardkonformität: Proprietäre MSG-Dateien in standardmäßiges MIME konvertieren, um sie an jeden Mail-Transport zu liefern.
  • Archivnormalisierung: Normalisieren Sie ein gemischtes Archiv aus .eml- und .msg-Dateien zu einem einzigen Format.
  • Testabläufe: Erstelle .eml-Fixtures in Tests und überprüfe, dass sie den MSG-Round-Trip ohne Datenverlust überstehen.

Betreff aus einer MSG-Datei lesen

Öffnen Sie eine Outlook‑MSG‑Datei aus einem Stream und geben Sie den Betreff aus — kein Microsoft Outlook erforderlich.

using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);

Eine MSG-Nachricht erstellen und speichern

Erstellen Sie eine vollständige E‑Mail mit Absender, Empfänger und Anhang und schreiben Sie sie dann in eine MSG‑Datei.

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 in MSG konvertieren

Laden Sie eine Standard‑.eml-Datei und speichern Sie sie als Outlook‑.msg-Datei mit dem integrierten MIME‑Parser.

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

Support und Lernressourcen

 Deutsch