Kako parsirati MSG datoteke u Pythonu

Kako parsirati MSG datoteke u Pythonu

aspose-email-foss za Python pruža čisto-Python API za čitanje Outlook MSG datoteka bez ovisnosti o Microsoft Officeu. Učitajte datoteku u MapiMessage objekt kako biste pristupili svim podacima poruke.

Vodič korak po korak

Korak 1: Instalirajte paket

pip install aspose-email-foss

Zahtijeva Python 3.10 ili noviji.


Korak 2: Uvezi klasu MapiMessage

from aspose.email_foss.msg import MapiMessage

Korak 3: Učitaj MSG datoteku

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

Za popustljivo parsiranje oštećenih datoteka, proslijedite strict=False:

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

Korak 4: Pristup svojstvima poruke

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

Korak 5: Popis privitaka

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

Korak 6: Pregledajte strukturu CFB na niskoj razini

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

Uobičajeni problemi i rješenja

CFBError prilikom učitavanja

Datoteka nije valjani CFB kontejner. Provjerite je li stvarna Outlook MSG datoteka, a ne EML.

Tijelo je prazno, ali HTML tijelo sadrži sadržaj

Neke poruke pohranjuju sadržaj samo u HTML-u. Provjerite msg.body_html kada msg.body vraća None.

Upozorenja o validaciji

Pristupite msg.validation_issues da biste vidjeli niz upozorenja o usklađenosti za učitanu datoteku.


Često postavljana pitanja (FAQ)

Mogu li čitati EML datoteke?

Ne izravno. Biblioteka obrađuje MSG (CFB) format. Prvo pretvorite EML sadržaj u EmailMessage objekt, zatim upotrijebite MapiMessage.from_email_message().

Da li učitavanje čita sve podatke privitaka u memoriju?

Ne. Metapodaci privitaka se čitaju po potrebi. Koristite iter_attachments_info() za laganu iteraciju.

Je li thread-safe?

Svaka MapiMessage instanca je neovisna. Istovremeno čitanje iz odvojenih instanci je sigurno.

 Hrvatski