Jak parsovat soubory MSG v Pythonu
aspose-email-foss for Python poskytuje čistě‑Python API pro čtení souborů Outlook MSG bez závislostí na Microsoft Office. Načtěte soubor do objektu MapiMessage, abyste získali přístup ke všem datům zprávy.
Průvodce krok za krokem
Krok 1: Nainstalujte balíček
pip install aspose-email-fossVyžaduje Python 3.10 nebo novější.
Krok 2: Importujte třídu MapiMessage
from aspose.email_foss.msg import MapiMessageKrok 3: Načíst soubor MSG
msg = MapiMessage.from_file("message.msg")Pro shovívavé parsování poškozených souborů předávejte strict=False:
msg = MapiMessage.from_file("message.msg", strict=False)Krok 4: Přístup k vlastnostem zprávy
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}")Krok 5: Seznam příloh
for att in msg.iter_attachments_info():
name = att.storage_name
is_embedded = att.is_embedded_message
print(f"Attachment: {name}, embedded={is_embedded}")Krok 6: Prozkoumat nízkoúrovňovou strukturu CFB
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()Časté problémy a opravy
CFBError při načítání
Soubor není platný kontejner CFB. Ověřte, že se jedná o skutečný soubor Outlook MSG, nikoli EML.
Tělo je prázdné, ale HTML tělo má obsah
Některé zprávy ukládají obsah pouze v HTML. Zkontrolujte msg.body_html, když msg.body vrací None.
Varování při validaci
Přístup msg.validation_issues zobrazí n‑tici varování o souladu pro načtený soubor.
Často kladené otázky (FAQ)
Mohu číst soubory EML?
Ne přímo. Knihovna pracuje s formátem MSG (CFB). Nejprve převeďte obsah EML na objekt EmailMessage, poté použijte MapiMessage.from_email_message().
Načítání načte všechna data přílohy do paměti?
Ne. Metadata přílohy se načítají na vyžádání. Použijte iter_attachments_info() pro lehkou iteraci.
Je to bezpečné pro vlákna?
Každá instance MapiMessage je nezávislá. Současné čtení z různých instancí je bezpečné.