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-fossBenötigt Python 3.10 oder höher.
Schritt 2: Importieren der MapiMessage‑Klasse
from aspose.email_foss.msg import MapiMessageSchritt 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.