Hvordan analysere MSG-filer i Python

Hvordan analysere MSG-filer i Python

aspose-email-foss for Python gir et rent Python‑API for å lese Outlook MSG‑filer uten avhengigheter til Microsoft Office. Last inn en fil i et MapiMessage‑objekt for å få tilgang til all meldingsdata.

Trinn-for-trinn guide

Steg 1: Installer pakken

pip install aspose-email-foss

Krever Python 3.10 eller nyere.


Trinn 2: Importer MapiMessage‑klassen

from aspose.email_foss.msg import MapiMessage

Trinn 3: Last inn en MSG‑fil

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

For tolerant parsing av feilformede filer, send strict=False:

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

Trinn 4: Tilgang til meldingsegenskaper

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

Trinn 5: List opp vedlegg

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

Steg 6: Inspiser lavnivå CFB‑struktur

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

Vanlige problemer og løsninger

CFBError ved lasting

Filen er ikke en gyldig CFB-beholder. Kontroller at den er en faktisk Outlook MSG-fil, ikke en EML.

Kroppen er tom, men HTML‑kroppen har innhold

Noen meldinger lagrer innhold kun i HTML. Sjekk msg.body_html når msg.body returnerer None.

Valideringsadvarsler

Åpne msg.validation_issues for å se en tuple med samsvarsadvarsler for den lastede filen.


Ofte stilte spørsmål (FAQ)

Kan jeg lese EML-filer?

Ikke direkte. Biblioteket håndterer MSG (CFB)-formatet. Konverter EML‑innhold til et EmailMessage‑objekt først, og bruk deretter MapiMessage.from_email_message().

Leser lasting inn all vedleggsdata i minnet?

Nei. Vedleggsmetadata leses på forespørsel. Bruk iter_attachments_info() for lettvektig iterasjon.

Er det trådsikkert?

Hver MapiMessage-instans er uavhengig. Samtidige lesninger fra separate instanser er trygge.

 Norsk