Ako parsovať MSG súbory v Pythone

Ako parsovať MSG súbory v Pythone

aspose-email-foss pre Python poskytuje čisté-Python API na čítanie Outlook MSG súborov bez závislostí na Microsoft Office. Načítajte súbor do objektu MapiMessage, aby ste získali prístup ku všetkým údajom správy.

Sprievodca krok za krokom

Krok 1: Nainštalujte balík

pip install aspose-email-foss

Vyžaduje Python 3.10 alebo novší.


Krok 2: Importovať triedu MapiMessage

from aspose.email_foss.msg import MapiMessage

Krok 3: Načítajte súbor MSG

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

Pre šetrné parsovanie neplatných súborov použite strict=False:

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

Krok 4: Prístup k vlastnostiam správy

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

Krok 5: Zoznam príloh

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

Krok 6: Skontrolovať nízkoúrovňovú štruktúru CFB

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

Bežné problémy a riešenia

CFBError pri načítaní

Súbor nie je platný kontajner CFB. Overte, že ide o skutočný súbor Outlook MSG, nie EML.

Telo je prázdne, ale HTML telo má obsah

Niektoré správy ukladajú obsah iba v HTML. Skontrolujte msg.body_html keď msg.body vráti None.

Upozornenia na validáciu

Prístup msg.validation_issues zobrazí n-ticu varovaní o súlade pre načítaný súbor.


Často kladené otázky (FAQ)

Môžem čítať súbory EML?

Nie priamo. Knižnica spracováva formát MSG (CFB). Najprv konvertujte obsah EML na objekt EmailMessage, potom použite MapiMessage.from_email_message().

Načítanie načíta všetky dáta prílohy do pamäte?

Nie. Metadáta príloh sa načítavajú na požiadanie. Použite iter_attachments_info() pre ľahkú iteráciu.

Je to vlákno-bezpečné?

Každá MapiMessage inštancia je nezávislá. Súčasné čítanie z rôznych inštancií je bezpečné.

 Slovenčina