Hoe MSG-bestanden te parseren in Python

Hoe MSG-bestanden te parseren in Python

aspose-email-foss voor Python biedt een pure-Python API voor het lezen van Outlook MSG‑bestanden zonder afhankelijkheden van Microsoft Office. Laad een bestand in een MapiMessage‑object om toegang te krijgen tot alle berichtgegevens.

Stapsgewijze handleiding

Stap 1: Installeer het pakket

pip install aspose-email-foss

Vereist Python 3.10 of hoger.


Stap 2: Importeer de MapiMessage-klasse

from aspose.email_foss.msg import MapiMessage

Stap 3: Laad een MSG‑bestand

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

Voor lossere parsing van misvormde bestanden, geef strict=False door:

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

Stap 4: Toegang tot bericht eigenschappen

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}")

Stap 5: Bijlagen weergeven

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

Stap 6: Inspecteer de low‑level CFB‑structuur

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

Veelvoorkomende problemen en oplossingen

CFBError bij het laden

Het bestand is geen geldige CFB‑container. Controleer of het een echt Outlook‑MSG‑bestand is, geen EML.

Body is leeg maar HTML-body heeft inhoud

Sommige berichten slaan inhoud alleen op in HTML. Controleer msg.body_html wanneer msg.body None retourneert.

Validatiewaarschuwingen

Open msg.validation_issues om een tuple van nalevingswaarschuwingen voor het geladen bestand te zien.


Veelgestelde vragen (FAQ)

Kan ik EML‑bestanden lezen?

Niet direct. De bibliotheek verwerkt het MSG (CFB)-formaat. Converteer eerst de EML‑inhoud naar een EmailMessage‑object, en gebruik vervolgens MapiMessage.from_email_message().

Leest het laden alle bijlagegegevens in het geheugen?

Nee. Attachment metadata wordt op aanvraag gelezen. Gebruik iter_attachments_info() voor lichte iteratie.

Is het thread-safe?

Elke MapiMessage instantie is onafhankelijk. Gelijktijdige lecties van afzonderlijke instanties zijn veilig.

 Nederlands