Cum să parsați fișierele MSG în Python
aspose-email-foss pentru Python oferă un API pure-Python pentru citirea fișierelor Outlook MSG fără dependențe de Microsoft Office. Încărcați un fișier într-un obiect MapiMessage pentru a accesa toate datele mesajului.
Ghid pas cu pas
Pasul 1: Instalați pachetul
pip install aspose-email-fossNecesită Python 3.10 sau o versiune ulterioară.
Pasul 2: Importați clasa MapiMessage
from aspose.email_foss.msg import MapiMessagePasul 3: Încarcă un fișier MSG
msg = MapiMessage.from_file("message.msg")Pentru parsarea indulgentă a fișierelor malformate, transmiteți strict=False:
msg = MapiMessage.from_file("message.msg", strict=False)Pasul 4: Accesarea proprietăților mesajului
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}")Pasul 5: Listarea atașamentelor
for att in msg.iter_attachments_info():
name = att.storage_name
is_embedded = att.is_embedded_message
print(f"Attachment: {name}, embedded={is_embedded}")Pasul 6: Inspectați structura CFB de nivel scăzut
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()Probleme comune și soluții
CFBError în timpul încărcării
Fișierul nu este un container CFB valid. Verificați că este un fișier Outlook MSG real, nu un EML.
Corpul este gol, dar corpul HTML are conținut
Unele mesaje stochează conținutul doar în HTML. Verificați msg.body_html când msg.body returnează None.
Avertismente de validare
Accesați msg.validation_issues pentru a vedea un tuplu de avertismente de conformitate pentru fișierul încărcat.
Întrebări frecvente (FAQ)
Pot citi fișiere EML?
Nu direct. Biblioteca gestionează formatul MSG (CFB). Convertește conținutul EML într-un obiect EmailMessage mai întâi, apoi folosește MapiMessage.from_email_message().
Încărcarea citește toate datele atașamentului în memorie?
Nu. Metadatele atașamentului sunt citite la cerere. Utilizați iter_attachments_info() pentru iterație ușoară.
Este thread‑safe?
Fiecare instanță MapiMessage este independentă. Citirile concurente din instanțe separate sunt sigure.