Sådan parses MSG-filer i Python

Sådan parses MSG-filer i Python

aspose-email-foss for Python leverer en ren‑Python API til læsning af Outlook MSG‑filer uden Microsoft Office‑afhængigheder. Indlæs en fil i et MapiMessage‑objekt for at få adgang til alle beskeddata.

Trin-for-trin guide

Trin 1: Installer pakken

pip install aspose-email-foss

Kræver Python 3.10 eller senere.


Trin 2: Importér MapiMessage-klassen

from aspose.email_foss.msg import MapiMessage

Trin 3: Indlæs en MSG-fil

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

For lempelig parsing af fejlbehæftede filer, angiv strict=False:

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

Trin 4: Få adgang til meddelelsesejendomme

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

Trin 5: List vedhæftede filer

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

Trin 6: Inspicer lavt niveau CFB Structure

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

Almindelige problemer og løsninger

CFBError ved indlæsning

Filen er ikke en gyldig CFB-beholder. Bekræft, at det er en faktisk Outlook MSG-fil, ikke en EML.

Kroppen er tom, men HTML‑kroppen har indhold

Nogle meddelelser gemmer kun indhold i HTML. Tjek msg.body_html når msg.body returnerer None.

Valideringsadvarsler

Få adgang til msg.validation_issues for at se en tuple af overholdelsesadvarsler for den indlæste fil.


Ofte stillede spørgsmål (FAQ)

Kan jeg læse EML-filer?

Ikke direkte. Biblioteket håndterer MSG (CFB)-formatet. Konvertér EML-indhold til et EmailMessage-objekt først, og brug derefter MapiMessage.from_email_message().

Læser indlæsning al vedhæftet data ind i hukommelsen?

Nej. Vedhæftningsmetadata læses på forespørgsel. Brug iter_attachments_info() til letvægtsiteration.

Er den trådsikker?

Hver MapiMessage-instans er uafhængig. Samtidige læsninger fra separate instanser er sikre.

 Dansk