Mbox-Speicherdateien

Der Hauptzweck dieses Artikels besteht darin, Sie beim Eintauchen in das Mbox-Format zu unterstützen und Ihnen Codeteile anzubieten, die Sie beim Lesen von Mbox Dateien unterstützen können. Sie erhalten Kenntnisse darüber, wie Sie Mbox Dateien analysieren und wie Sie auf die darin enthaltenen Nachrichten zugreifen, sie anzeigen und speichern.

Über das Mbox-Format

Das mbox-Format ist aufgrund seiner langen Geschichte und breiten Akzeptanz als standardisiertes Format zum Speichern von E-Mail-Nachrichten von Bedeutung. Es handelt sich um ein Nur-Text Datei format, mit dem mehrere E-Mail-Nachrichten verkettet und in einer einzigen Datei gespeichert werden können. Die Einfachheit und Kompatibilität dieses Formats mit verschiedenen E-Mail-Clients und -Systemen machen es zu einer beliebten Wahl für die Archivierung und Übertragung von E-Mail-Daten. Darüber hinaus behält das Mbox-Format wichtige Metadaten wie Absender, Empfänger, Betreff und Zeitstempel bei und stellt so sicher, dass die Integrität der Nachrichten gewahrt bleibt.

Die beliebtesten E-Mail-Clients, die mit diesem Format kompatibel sind, sind:

  • Thunderbird – ein weit verbreiteter 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 Datei mit der Erweiterung „.mbox“. Für den Benutzerkomfort und die einfache Verwaltung werden für jeden Ordner im Postfach separate Dateien erstellt. Es ermöglicht Benutzern den nahtlosen Import und Export von Mbox Dateien und ermöglicht so eine mühelose Migration von E-Mail-Daten zwischen Thunderbird und anderen Mbox-kompatiblen Anwendungen.

  • Apple Mail – der Standard-E-Mail-Client auf macOS und iOS-Geräten, der integrierte Unterstützung für das Mbox-Format bietet. Es ermöglicht Benutzern den einfachen Zugriff auf, den Import oder die Übertragung von Mbox Dateien in Apple Mail, indem jeder Postfachordner als separate Datei gespeichert wird. Apple Mail Dateien werden normalerweise mit den Erweiterungen „.mbox“ oder „.mbox.plist“ gespeichert.

  • Evolution – eine funktionsreiche E-Mail und persönliche Informationsverwaltungsanwendung für Linux, unterstützt auch das Mbox-Format. Es ermöglicht Benutzern den Import von Mbox Dateien und ermöglicht so eine reibungslose Integration von E-Mail-Daten in die umfassende Plattform von Evolution.

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

Es gibt verschiedene Variationen des 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.

Python-API zum Lesen von Mbox Dateien

Das Arbeiten mit Mbox Dateien in Python ist mit unserer Bibliothek Aspose.Email for Python ganz einfach. Diese robuste und funktionsreiche API bietet umfangreiche Funktionen für die E-Mail-Verarbeitung, z. B. die Möglichkeit, Mbox Dateien zu lesen, Nachrichten zu extrahieren und E-Mail-Daten zu bearbeiten.

Es ist wichtig zu erwähnen, dass Aspose.Email for Python auch umfassende Unterstützung für verschiedene Mbox-Formate bietet, einschließlich der zuvor genannten. Dies bedeutet, dass Sie unabhängig von den spezifischen Implementierungsdetails des Mbox-Formats nahtlos mit diesen Dateien von verschiedenen E-Mail-Clients arbeiten können. Um die Leistungsfähigkeit der API zu nutzen, ist es möglich, entweder ihre DLL herunterzuladen oder sie von PyPI mit dem folgenden Befehl zu installieren:

> pip install Aspose.Email-for-Python-via-NET

Öffnen Sie die Mbox-Datei

Um mit der Arbeit mit einer Datei im Mbox-Format zu beginnen, sollten wir sie zuerst öffnen. Die Aspose.Email-Bibliothek wird uns dabei helfen.

In unserem Code folgen wir den unten beschriebenen Schritten:

  • Der Code beginnt mit dem Importieren der erforderlichen Module aus der Aspose.Email-Bibliothek: den Klassen MboxStorageReader und MboxLoadOptions.

  • Anschließend erstellen wir eine Instanz von MboxLoadOptions, um die gewünschten Optionen zum Laden der Datei anzugeben.

  • Dann setzen wir „leaveopen“ auf „False“, was angibt, dass die Datei nach dem Lesen geschlossen werden soll, und geben UTF8 als bevorzugte Textkodierung an.

  • Schließlich erstellen wir eine Instanz der Klasse MboxStorageReader, indem wir die statische Methode „createreader“ aufrufen und den Namen der Quelldatei und die Instanz „MboxLoadOptions“ übergeben.

Der folgende Codeausschnitt zeigt, wie eine Mbox-Datei geöffnet wird:

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

mbox_reader = MboxStorageReader.create_reader(file_name, mbox_load_options)

Listen Sie Nachrichten aus der Mbox-Datei auf

Da die Datei geöffnet wurde, können wir die darin gespeicherten Nachrichten durchsuchen. Die folgenden Codeausschnitte stellen zwei Ansätze zum Auflisten von Nachrichten aus einer Mbox-Datei dar.

Ansatz 1: EnumerateMessageInfo-Methode

Der erste Ansatz zum Auflisten von Nachrichten aus einer Mbox-Datei ist die Verwendung der Methode enumeratemessageinfo der Klasse MboxStorageReader. Es durchläuft die Nachrichten und zeigt grundlegende Nachrichteninformationen wie Betreff, Felder von, bis und Datum an. Außerdem wird eine Nachrichtenkennung (Eintrags-ID) zurückgegeben, die später zum Lesen des gesamten Nachrichteninhalts verwendet wird. Dieser Ansatz weist die folgenden Merkmale auf:

  • Leistung: Im Vergleich zu einem anderen Ansatz ist er schneller, da der Schwerpunkt auf dem Lesen und Anzeigen der grundlegenden Nachrichteninformationen liegt und das Parsen und Laden des Nachrichtentexts während der Iteration vermieden wird.

  • Effizienz: Durch die ausschließliche Ausrichtung auf grundlegende Informationen werden der Speicherverbrauch und die Verarbeitungszeit minimiert. Dies wird besonders geschätzt, wenn man mit großen Dateien mit zahlreichen Nachrichten zu tun hat.

Um Nachrichten in einer Mbox-Datei zu lesen, aufzulisten und anzuzeigen, führen wir die folgenden Schritte aus:

  • Importieren Sie die erforderlichen Module aus der Aspose.Email-Bibliothek: die Klassen MboxStorageReader und MboxLoadOptions.

  • Erstellen Sie eine Instanz der MboxLoadOptions Klasse. Dieses Objekt enthält verschiedene Optionen zum Laden der Datei.

  • Konfigurieren Sie die Eigenschaften des Objekts:

    • Setzen Sie „leaveopen“ auf „False“, wenn Sie die Datei nach dem Lesen schließen möchten.
    • Setzen Sie „preferredtextencoding“ auf „utf-8“, um die gewünschte Textkodierung für den Nachrichteninhalt anzugeben.
  • Öffnen Sie die Datei mit der Methode MboxStorageReader.createreader() der Klasse MboxStorageReader.

  • Durchlaufen Sie jede Nachricht in der Datei mit der Methode enumeratemessageinfo() des mboxreader Objekts und extrahieren Sie bestimmte Details aus jeder Nachricht. In unserem Beispiel sind es Betreff, Adresse, An und Datum.

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

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for message_info in mbox_reader.enumerate_message_info():
        print(message_info.subject)
        print(message_info.from_address)
        print(message_info.to)
        print(message_info.date)

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

Ansatz 2: EnumerateMessages-Methode

Im Gegensatz zum ersten Ansatz zielt der zweite Ansatz darauf ab, die in der Mbox-Datei enthaltenen MailMessage-Instanzen mithilfe der Methode enumeratemessages direkt zu durchlaufen. Diese Methode 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: Es ermöglicht den Zugriff auf und die Verarbeitung des gesamten Nachrichteninhalts, einschließlich Text, Anhänge, Kopfzeilen und anderer Teile.

  • Bequemlichkeit: Dieser Ansatz erweist sich als nützlich, wenn Sie Vorgänge für die gesamte Nachricht ausführen möchten, z. B. das Speichern jeder Nachricht in einer separaten Datei. Dadurch wird der Prozess einfacher, da bei jeder Iteration der gesamte Nachrichteninhalt geladen wird, sodass Sie die gewünschten Vorgänge ausführen können, ohne dass nachfolgende Suchvorgänge erforderlich sind.

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

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for eml in mbox_reader.enumerate_messages():
        eml.save(f"{eml.subject}.eml")

Es ist zu beachten, dass das Laden des gesamten Nachrichteninhalts für jede Iteration potenziell die Leistung beeinträchtigen kann, insbesondere wenn es sich um große Dateien oder eine beträchtliche Anzahl von Nachrichten handelt. Daher ist es wichtig, Ihre spezifischen Anforderungen zu bewerten und Faktoren wie die Größe der Datei, die Anzahl der Nachrichten und die Vorgänge, die Sie ausführen möchten, zu berücksichtigen, wenn Sie den für Ihre Situation am besten geeigneten Ansatz ermitteln.

Lesen Sie Nachrichten in Mbox Dateien

Eine weitere Manipulation, die Sie möglicherweise mit einer Mbox-Datei durchführen möchten, ist das Lesen der darin enthaltenen Nachrichten. Sie können dies mithilfe der Zeichenfolgenkennung tun, die aus dem ersten Ansatz der Aufzählung von MessageInfo abgeleitet wurde.

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. Dieses Objekt enthält verschiedene Optionen zum Laden von EML Dateien.
  • Konfigurieren Sie die Eigenschaften:
    • Legen Sie „preserveembeddedmessageformat“ auf „True“ fest, wenn Sie das eingebettete Nachrichtenformat in der EML-Datei beibehalten möchten.
    • Setzen Sie „preservetnefattachments“ auf „True“, wenn Sie TNEF-Anhänge in der EML-Datei beibehalten möchten.
  • Erstellen Sie eine Instanz von MboxLoadOptions. Dieses Objekt enthält verschiedene Optionen zum Laden der Mbox-Datei.
  • Konfigurieren Sie die Eigenschaften von mboxloadoptions:
    • Setzen Sie „leaveopen“ auf „False“, wenn Sie die Datei nach dem Lesen schließen möchten.
    • Setzen Sie „preferredtextencoding“ auf „utf-8“, um die gewünschte Textkodierung für den Nachrichteninhalt anzugeben.
  • Öffnen Sie die Datei mit der Methode MboxStorageReader.createreader().
  • 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:

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions
from aspose.email import EmlLoadOptions

eml_load_options = EmlLoadOptions()
eml_load_options.preserve_embedded_message_format = True
eml_load_options.preserve_tnef_attachments = True

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for message_info in mbox_reader.enumerate_message_info():
        eml = mbox_reader.extract_message(message_info.entry_id, eml_load_options)
        eml.save(f"{eml.subject}.eml")

Ein wesentlicher Vorteil dieses Ansatzes besteht darin, dass er es Ihnen ermöglicht, bestimmte Nachrichten selektiv zu lesen und zu verarbeiten, ohne Rücksicht auf andere zu nehmen. Diese Flexibilität erweist sich besonders beim Umgang mit großen Dateien, die eine große Anzahl von Nachrichten enthalten, als vorteilhaft. Durch die selektive Verarbeitung nur der gewünschten Nachrichten werden unnötige Berechnungen minimiert, was zu einer verbesserten Gesamteffizienz führt.

Es ist wichtig zu verstehen, dass die Nachrichtenkennung innerhalb einer einzelnen Datei eindeutig ist. Wenn Sie also mit Nachrichten über mehrere Mbox Dateien hinweg arbeiten, ist es notwendig, eine Zuordnung zwischen diesen Bezeichnern und den entsprechenden Dateien aufrechtzuerhalten.

Dienstprogrammfunktionen

Die Aspose.Email-Bibliothek bietet mehrere Hilfsfunktionen, um Ihre Arbeit mit Mbox Dateien zu verbessern. Betrachten wir einige davon:

Rufen Sie die Gesamtzahl der in mbox gespeicherten Elemente ab

Es gibt eine einfache Möglichkeit, die Gesamtzahl der in einer Mbox-Datei gespeicherten Elemente (Nachrichten) zu ermitteln. Verwenden Sie die Methode gettotalitemscount(), um die Gesamtzahl der in der Datei vorhandenen Elemente (Nachrichten) abzurufen.

Der folgende Code ermittelt die Gesamtzahl der in der Datei vorhandenen Elemente (Nachrichten).

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
    items_count = mbox_reader.get_total_items_count()

Erhalten Sie die in einer Iteration gelesene Datengröße

Um die Größe der während einer einzelnen Iteration gelesenen Daten zu ermitteln, können Sie auf die Eigenschaft „currentdatasize“ des mboxreader Objekts zugreifen, um die Größe der in der aktuellen Iteration gelesenen Daten (Nachrichten) abzurufen.

Der folgende Code durchläuft jede Nachricht in der Datei. Bei jeder Iteration wird die Größe der aktuell gelesenen Nachricht ermittelt.

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for message_info in mbox_reader.enumerate_message_info():
        message_size = mbox_reader.current_data_size

Abschluss

In diesem Artikel haben wir die Mbox untersucht – ein standardisiertes und weithin akzeptiertes Format zum Speichern von E-Mail-Nachrichten. Seine Einfachheit und Kompatibilität mit verschiedenen E-Mail-Clients und -Systemen machen es zu einer beliebten Wahl für die Archivierung und Übertragung von E-Mail-Daten. Das Format einschließlich seiner Variationen wird von unserer leistungsstarken Bibliothek Aspose.Email for Python unterstützt, die das einfache Lesen, Extrahieren und Bearbeiten von E-Mail-Daten ermöglicht. Unsere einfachen Codeausschnitte und Codeschritte enthielten umfassende und detaillierte Anweisungen zum Öffnen, Auflisten und Anzeigen von Nachrichten in Mbox Dateien.

Weitere Funktionen von Aspose.Email können Sie mithilfe der Dokumentation erkunden. Sie können Ihre Fragen auch in unserem Forum posten.

Siehe auch