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-fossZahteva 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 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.