Kako parsirati MSG fajlove u Pythonu

Kako parsirati MSG fajlove u Pythonu

aspose-email-foss za Python pruža čisto‑Python API za čitanje Outlook MSG datoteka bez zavisnosti od Microsoft Office‑a. Učitajte datoteku u MapiMessage objekat da biste pristupili svim podacima poruke.

Vodič korak po korak

Korak 1: Instalirajte paket

pip install aspose-email-foss

Zahteva 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 fajlova, prosledite 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: Lista priloga

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 niskog nivoa

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

Уобичајени проблеми и исправке

CFBError prilikom učitavanja

Datoteka nije važeći CFB kontejner. Proverite da li je stvarna Outlook MSG datoteka, a ne EML.

Telo je prazno, ali HTML telo ima sadržaj

Neke poruke čuvaju sadržaj samo u HTML-u. Proverite msg.body_html kada msg.body vrati None.

Upozorenja o validaciji

Pristupite msg.validation_issues da biste videli tuple upozorenja o usklađenosti za učitani fajl.


Често постављана питања (FAQ)

Mogu li da čitam EML fajlove?

Не директно. Библиотека обрађује MSG (CFB) формат. Прво конвертујте EML садржај у EmailMessage објекат, а затим користите MapiMessage.from_email_message().

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

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

Da li je thread‑safe?

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

 Српски