Wie man MSG-Dateien in Python analysiert

Wie man MSG-Dateien in Python analysiert

aspose-email-foss für Python bietet eine reine Python-API zum Lesen von Outlook MSG-Dateien ohne Microsoft Office‑Abhängigkeiten. Laden Sie eine Datei in ein MapiMessage‑Objekt, um auf alle Nachrichtendaten zuzugreifen.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

pip install aspose-email-foss

Benötigt Python 3.10 oder höher.


Schritt 2: Importieren der MapiMessage‑Klasse

from aspose.email_foss.msg import MapiMessage

Schritt 3: MSG-Datei laden

msg = MapiMessage.from_file("message.msg")

Für nachgiebiges Parsen von fehlerhaften Dateien übergeben Sie strict=False:

msg = MapiMessage.from_file("message.msg", strict=False)

Schritt 4: Zugriff auf Nachrichteneigenschaften

print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html[:200] if msg.body_html else 'None'}")
print(f"Message Class: {msg.message_class}")

Schritt 5: Anhänge auflisten

for att in msg.iter_attachments_info():
    name = att.storage_name
    is_embedded = att.is_embedded_message
    print(f"Attachment: {name}, embedded={is_embedded}")

Schritt 6: Low-Level CFB Structure prüfen

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("message.msg")
print(f"Directory entries: {reader.directory_entry_count}")
for entry in reader.iter_streams():
    print(f"  Stream: {entry}")
reader.close()

Häufige Probleme und Lösungen

CFBError beim Laden

Die Datei ist kein gültiger CFB‑Container. Stellen Sie sicher, dass es sich um eine echte Outlook‑MSG‑Datei handelt und nicht um eine EML.

Der Body ist leer, aber der HTML-Body hat Inhalt

Einige Nachrichten speichern den Inhalt nur in HTML. Prüfen Sie msg.body_html, wenn msg.body None zurückgibt.

Validierungswarnungen

Greifen Sie auf msg.validation_issues zu, um ein Tupel von Compliance‑Warnungen für die geladene Datei zu sehen.


Häufig gestellte Fragen (FAQ)

Kann ich EML-Dateien lesen?

Nicht direkt. Die Bibliothek verarbeitet das MSG (CFB)-Format. Konvertieren Sie den EML‑Inhalt zuerst in ein EmailMessage‑Objekt, dann verwenden Sie MapiMessage.from_email_message().

Liest das Laden alle Anhangsdaten in den Speicher?

Nein. Anhang‑Metadaten werden bei Bedarf gelesen. Verwenden Sie iter_attachments_info() für eine leichte Iteration.

Ist es thread-safe?

Jede MapiMessage‑Instanz ist unabhängig. Gleichzeitige Lesevorgänge von separaten Instanzen sind sicher.

 Deutsch