Mbox-Speicherdateien

In diesem Artikel befassen wir uns mit dem Mbox-Format und stellen Ihnen Codeausschnitte zur Verfügung, die Ihnen den Einstieg in das Lesen von Mbox Dateien erleichtern. Sie erfahren, wie Sie Mbox Dateien analysieren und die darin enthaltenen Nachrichten anzeigen und speichern.

Was ist das Mbox-Format?

Das mbox-Format ist ein weit verbreitetes Dateiformat zum Speichern von E-Mail-Nachrichten. Es hat eine lange Geschichte und wird von mehreren beliebten E-Mail-Clients unterstützt, darunter Thunderbird, Apple Mail und vielen anderen. Im Mbox-Format werden mehrere E-Mail-Nachrichten als einfacher Text in einer einzigen Datei gespeichert, was die Archivierung und den Transport von E-Mail-Daten erleichtert.

Es gibt verschiedene Varianten des Mbox-Formats, jede mit eigenen Implementierungsdetails. Zu den häufig vorkommenden Mbox-Formaten gehören „mboxrd“, „mboxo“, „mboxcl“ und „mboxcl2“. Diese Varianten unterscheiden sich hauptsächlich in der Art und Weise, wie sie bestimmte Aspekte wie Nachrichtentrennzeichen und Metadaten handhaben. Bei der Arbeit mit Mbox Dateien ist es wichtig, sich dieser Unterschiede bewusst zu sein, da sie sich auf die Kompatibilität und das Parsen der E-Mail-Daten auswirken können.

Schauen wir uns einige E-Mail-Clients genauer an und wie sie das Mbox-Format nutzen:

  • Thunderbird: Thunderbird ist ein beliebter Open-Source-E-Mail-Client, der das Mbox-Format zum Speichern von E-Mail-Nachrichten verwendet. Es speichert alle Nachrichten eines Ordners in einer einzigen Mbox-Datei mit der Erweiterung „.mbox“. Thunderbird erstellt für jeden Ordner im Postfach des Benutzers separate Mbox Dateien und ermöglicht so eine einfache Verwaltung und Sicherung von E-Mail-Daten.

  • Apple Mail: Apple Mail, der Standard-E-Mail-Client auf macOS und iOS-Geräten, übernimmt ebenfalls das Mbox-Format. Es speichert jeden Postfachordner als separate Mbox-Datei und erleichtert so die Migration oder Übertragung von E-Mail-Daten zwischen Apple Mail-Installationen. Apple Mail-Mbox Dateien haben normalerweise die Erweiterung „.mbox“ oder „.mbox.plist“.

  • Eudora: Eudora, ein früher beliebter E-Mail-Client, nutzte das Mbox-Format zum Speichern von E-Mail-Nachrichten. Es wurde ein leicht modifiziertes Mbox-Format verwendet, das als „Eudora-Mailbox-Format“ bekannt ist. Das Eudora-Postfachformat enthielt zusätzliche Funktionen und Metadaten, die für Eudora spezifisch sind, wie z. B. Beschriftungen und Statusflags.

Dies sind nur einige Beispiele für E-Mail-Clients, die das Mbox-Format verwenden. Wenn Sie programmgesteuert mit Mbox Dateien arbeiten, ist es wichtig, das Mbox-Format und seine Verwendung in verschiedenen E-Mail-Clients zu verstehen, da es dazu beiträgt, die Kompatibilität und genaue Analyse von E-Mail-Daten sicherzustellen.

.NET-API zum Lesen von Mbox Dateien

Um mit Mbox Dateien in C# zu arbeiten, verwenden wir Aspose.Email for .NET. Diese robuste und funktionsreiche Bibliothek bietet eine breite Palette von Funktionen für die E-Mail-Verarbeitung, einschließlich des Lesens von Mbox Dateien, des Extrahierens von Nachrichten und der Bearbeitung von E-Mail-Daten. Es ist erwähnenswert, dass Aspose.Email for .NET umfassende Unterstützung für verschiedene Mbox-Formate bietet, einschließlich der oben genannten. Dadurch können Sie unabhängig von den spezifischen Mbox-Implementierungsdetails nahtlos mit Mbox Dateien von verschiedenen E-Mail-Clients arbeiten. Um die Leistungsfähigkeit der API zu nutzen, ist es möglich, entweder ihre DLL herunterzuladen oder sie von NuGet mit dem folgenden Befehl zu installieren:

PM> Install-Package Aspose.Email

Öffnen von Mbox Dateien

Nachdem wir nun das Mbox-Format und seine Verwendung in verschiedenen E-Mail-Clients besser verstanden haben, wollen wir mit der Erkundung der Funktionen und Praktiken der Arbeit mit Mbox Dateien mithilfe von Aspose.Email fortfahren. Um mit dem Parsen einer Mbox-Datei zu beginnen, müssen wir sie öffnen. Im Folgenden finden Sie die Schritte zum Öffnen einer Mbox-Datei:

  • Zuerst erstellen wir eine Instanz von MboxLoadOptions, um die gewünschten Optionen zum Laden der Mbox-Datei anzugeben.

  • Anschließend setzen wir LeaveOpen auf „false“, um die Mbox-Datei nach dem Lesen automatisch zu schließen, und geben „Encoding.UTF8“ als bevorzugte Textkodierung an.

  • Schließlich erstellen wir eine Instanz der Klasse MboxStorageReader, indem wir die statische Methode CreateReader aufrufen und dabei den Namen der Quell-MBOX-Datei und die Instanz „MboxLoadOptions“ übergeben.

Die Schritte werden im folgenden Codeausschnitt dargestellt:

var mboxLoadOptions = new MboxLoadOptions
{
    LeaveOpen = false,
    PreferredTextEncoding = Encoding.UTF8
};

var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions);

Nachrichten auflisten

Sobald wir die Mbox-Datei geöffnet haben, können wir Informationen zu den gespeicherten Nachrichten abrufen. Die folgenden Codeausschnitte veranschaulichen zwei Ansätze zum Auflisten von Nachrichten aus einer Mbox-Datei.

Ansatz 1: Verwendung der EnumerateMessageInfo-Methode

Die Methode EnumerateMessageInfo der Klasse MboxStorageReader wird verwendet, um die Nachrichten zu durchlaufen und grundlegende Nachrichteninformationen wie Betreff, Felder von, bis und Datum anzuzeigen. Außerdem wird eine Nachrichtenkennung (Eintrags-ID) zurückgegeben, die später zum Lesen des gesamten Nachrichteninhalts verwendet werden kann. Dieser Ansatz weist die folgenden Merkmale auf:

  • Leistung: Dieser Ansatz ist im Vergleich zum zweiten Ansatz leistungsfähiger, da nur die grundlegenden Nachrichteninformationen gelesen und angezeigt werden. Dadurch wird der Aufwand für das Parsen und Laden des gesamten Nachrichteninhalts während der Iteration vermieden.

  • Effizienz: Durch das Abrufen nur der erforderlichen Informationen werden der Speicherverbrauch und die Verarbeitungszeit minimiert. Dies ist besonders nützlich, wenn Sie mit großen Mbox Dateien arbeiten, die zahlreiche Nachrichten enthalten.

Es ist jedoch wichtig zu beachten, dass bei diesem Ansatz nicht der gesamte Nachrichteninhalt während der ersten Iteration geladen wird. Stattdessen werden nur die wesentlichen Details abgerufen, was eine schnellere Erstverarbeitung ermöglicht.

Der folgende Codeausschnitt demonstriert den Prozess der Iteration durch die Nachrichten mithilfe der Methode EnumerateMessageInfo und deren Informationsabruf.

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    foreach (var messageInfo in mbox.EnumerateMessageInfo())
    {
        Console.WriteLine(messageInfo.Subject);
        Console.WriteLine(messageInfo.From);
        Console.WriteLine(messageInfo.To);
        Console.WriteLine(messageInfo.Date);
    }
}

Auf diese Weise können wir auf Eigenschaften wie Betreff, Von, Bis und Datum zugreifen, um die relevanten Details anzuzeigen.

Ansatz 2: Verwendung der EnumerateMessages-Methode

Die zweite Möglichkeit besteht darin, die Methode EnumerateMessages zu verwenden, um die in der Mbox-Datei enthaltenen MailMessage-Instanzen direkt zu durchlaufen. Dieser Ansatz liest und lädt den gesamten Nachrichteninhalt während jeder Iteration und ermöglicht so den sofortigen Zugriff auf die vollständigen E-Mail-Informationen. Hier sind einige Schlüsselaspekte dieses Ansatzes:

  • Vollständigkeit: Im Gegensatz zum ersten Ansatz ermöglicht Ihnen diese Methode den Zugriff und die Verarbeitung des gesamten Nachrichteninhalts, einschließlich Text, Anhänge, Kopfzeilen und anderer Teile. Es bietet umfassenden Zugriff auf die vollständigen E-Mail-Daten während der Iteration.

  • Praktisch: Dieser Ansatz ist nützlich, wenn Sie Vorgänge für die gesamte Nachricht ausführen möchten, z. B. das Speichern jeder Nachricht in separaten Dateien (wie im Beispiel gezeigt). Es vereinfacht den Prozess, indem der gesamte Nachrichteninhalt in jeder Iteration geladen wird, sodass Sie gewünschte Vorgänge ausführen können, ohne dass nachfolgende Suchvorgänge erforderlich sind.

Es ist jedoch wichtig zu bedenken, dass das Laden des gesamten Nachrichteninhalts während jeder Iteration Auswirkungen auf die Leistung haben kann, insbesondere wenn es um große Mbox Dateien oder eine große Anzahl von Nachrichten geht. Die zusätzliche Verarbeitungszeit, die zum Laden des gesamten Nachrichteninhalts erforderlich ist, kann ein Kompromiss sein, der bei der Wahl zwischen den beiden Ansätzen berücksichtigt werden muss.

Der folgende Codeausschnitt demonstriert den Prozess der Iteration durch die Nachrichten mithilfe der Methode EnumerateMessages und den Abruf des gesamten Nachrichteninhalts.

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    foreach (var eml in mbox.EnumerateMessages())
    {
        eml.Save($@"{eml.Subject}.eml");
    }
}

Auf diese Weise können wir verschiedene Vorgänge für jede Nachricht ausführen, wie zum Beispiel das Speichern in separaten .eml Dateien, wie im Beispiel gezeigt.

Letztendlich hängt die Wahl zwischen diesen Ansätzen von Ihrem spezifischen Anwendungsfall und Ihren Anforderungen ab. Wenn Sie schnell auf grundlegende Nachrichteninformationen zugreifen und weitere Vorgänge für bestimmte Nachrichten ausführen müssen, bietet der erste Ansatz eine bessere Leistung. Wenn Sie andererseits sofortigen Zugriff auf den gesamten Nachrichteninhalt benötigen und Vorgänge für alle Nachrichten gleichzeitig ausführen möchten, bietet der zweite Ansatz Komfort auf Kosten einer etwas geringeren Leistung.

Es ist wichtig, Ihre spezifischen Anforderungen zu bewerten und Faktoren wie die Größe der Mbox-Datei, die Anzahl der Nachrichten und die Vorgänge, die Sie ausführen möchten, zu berücksichtigen, wenn Sie entscheiden, welcher Ansatz für Ihr Szenario besser geeignet ist.

Nachrichten lesen

Im vorherigen Abschnitt haben wir besprochen, wie Nachrichten aufgelistet werden. Lassen Sie uns nun untersuchen, wie wir einzelne Nachrichten mithilfe ihrer Zeichenfolgenkennung lesen können, die aus dem ersten Ansatz der Aufzählung von MessageInfo abgeleitet werden kann.

Wenn Sie die Methode EnumerateMessageInfo zum Auflisten von Nachrichten verwenden, wird jeder Nachricht eine eindeutige Kennung in einer einzelnen Mbox-Datei zugeordnet. Dieser Bezeichner, der normalerweise als Zeichenfolge dargestellt wird, kann aus der Eigenschaft EntryId des Objekts MboxMessageInfo abgerufen werden.

Sobald wir die Nachrichtenkennung erhalten haben, können wir sie verwenden, um den vollständigen Nachrichteninhalt durch die folgenden Schritte anzuzeigen:

  • Wir erstellen eine Instanz von EmlLoadOptions, um die gewünschten Optionen zum Laden der extrahierten Nachrichten anzugeben.
  • Wir ermöglichen die Beibehaltung des eingebetteten Nachrichtenformats und der TNEF-Anhänge.
  • Innerhalb der foreach-Schleife greifen wir auf die Eigenschaft EntryId jedes MboxMessageInfo Objekts zu, die den eindeutigen Bezeichner der entsprechenden Nachricht darstellt.
  • Anschließend verwenden wir diesen Bezeichner zusammen mit der Methode ExtractMessage der Klasse MboxStorageReader, um die vollständige Nachricht als MailMessage Objekt abzurufen.
  • Schließlich können wir alle gewünschten Vorgänge an der Nachricht ausführen, z. B. das Speichern in einer separaten .eml-Datei.

Der folgende Codeausschnitt zeigt, wie eine einzelne Nachricht anhand ihrer Zeichenfolgenkennung gelesen wird:

var emlLoadOptions = new EmlLoadOptions
{
    PreserveEmbeddedMessageFormat = true,
    PreserveTnefAttachments = true
};

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    foreach (var messageInfo in mbox.EnumerateMessageInfo())
    {
        var eml = mbox.ExtractMessage(messageInfo.EntryId, emlLoadOptions);
        eml.Save($@"{eml.Subject}.eml");
    }
}

Durch die Nutzung der Nachrichtenkennung, die wir aus dem ersten Ansatz der Aufzählung von MessageInfo erhalten, können wir einzelne Nachrichten basierend auf unseren spezifischen Anforderungen effizient lesen.

Es ist erwähnenswert, dass Sie mit diesem Ansatz gezielt interessante Nachrichten lesen und verarbeiten und andere überspringen können. Diese Flexibilität ist besonders wertvoll, wenn es um große Mbox Dateien mit einer beträchtlichen Anzahl von Nachrichten geht, da sie unnötige Verarbeitung minimiert und die Gesamteffizienz verbessert.

Beachten Sie, dass die Nachrichtenkennung innerhalb einer einzelnen Mbox-Datei eindeutig ist. Wenn Sie mit Nachrichten über mehrere Mbox Dateien hinweg arbeiten müssen, müssen Sie eine Zuordnung zwischen den Bezeichnern und den entsprechenden Dateien pflegen.

Durch die Möglichkeit, einzelne Nachrichten anhand ihrer eindeutigen Zeichenfolgenkennung zu lesen, haben Sie eine größere Kontrolle und Flexibilität bei der Verarbeitung von Mbox Dateien und können den gewünschten E-Mail-Inhalt effektiv extrahieren und bearbeiten.

Dienstprogrammfunktionen

Die Aspose.Email-Bibliothek bietet mehrere Hilfsfunktionen, die beim Arbeiten mit Mbox Dateien nützlich sein können. Hier ein paar Beispiele:

Rufen Sie die Gesamtzahl der in mbox gespeicherten Elemente ab

Mit der Methode GetTotalItemsCount können wir ganz einfach die Gesamtzahl der in der Mbox-Datei gespeicherten Elemente anzeigen. Dies kann nützlich sein, um die Größe der E-Mail-Sammlung zu verfolgen. Verwenden Sie dazu den folgenden Codeausschnitt.

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    var itemsCount = mbox.GetTotalItemsCount();
}

Erhalten Sie die in einer Iteration gelesene Datengröße

Durch Zugriff auf die Eigenschaft CurrentDataSize während der Iteration können wir die Größe der Daten ermitteln, die in einer Iteration gelesen wurden. Dies können wertvolle Informationen zur Leistungsoptimierung oder Fortschrittsverfolgung sein. Um dies zu erreichen, verwenden Sie den folgenden Codeausschnitt:

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    foreach (var messageInfo in mbox.EnumerateMessageInfo())
    {
        var messageSize = mbox.CurrentDataSize;
    }
}

Abschluss

In diesem Artikel haben wir das Mbox-Format untersucht und die Bibliothek Aspose.Email for .NET als leistungsstarkes Tool für die Arbeit mit Mbox Dateien in C#-Projekten vorgestellt. Wir haben erläutert, wie Sie Mbox Dateien öffnen, Nachrichten analysieren und anzeigen und einige Dienstprogrammfunktionen vorgestellt. Ausgestattet mit diesem Wissen und den bereitgestellten Codeausschnitten sind Sie nun in der Lage, bei Ihren Programmierbemühungen problemlos mit Mbox Dateien umzugehen. Weitere Funktionen von Aspose.Email können Sie mithilfe der Dokumentation erkunden. Sie können Ihre Fragen auch in unserem Forum posten.

Siehe auch