Cum să parsați fișierele MSG în Python

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-foss

Necesită Python 3.10 sau o versiune ulterioară.


Pasul 2: Importați clasa MapiMessage

from aspose.email_foss.msg import MapiMessage

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

 Română