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-fossZahtijeva Python 3.10 ili noviji.
Korak 2: Uvezi klasu MapiMessage
from aspose.email_foss.msg import MapiMessageKorak 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.