Kaip analizuoti MSG failus Python kalba
aspose-email-foss for Python suteikia gryną Python API, skirtą skaityti Outlook MSG failus be Microsoft Office priklausomybių. Įkelkite failą į MapiMessage objektą, kad galėtumėte pasiekti visus pranešimo duomenis.
Žingsnis po žingsnio vadovas
Žingsnis 1: Įdiekite paketą
pip install aspose-email-fossReikalauja Python 3.10 arba naujesnės.
Žingsnis 2: Importuoti MapiMessage klasę
from aspose.email_foss.msg import MapiMessageŽingsnis 3: Įkelti MSG failą
msg = MapiMessage.from_file("message.msg")Norint švelniai analizuoti netinkamai suformuotas bylas, pateikite strict=False:
msg = MapiMessage.from_file("message.msg", strict=False)Žingsnis 4: Prieiga prie žinutės savybių
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}")Žingsnis 5: Išvardyti priedus
for att in msg.iter_attachments_info():
name = att.storage_name
is_embedded = att.is_embedded_message
print(f"Attachment: {name}, embedded={is_embedded}")Žingsnis 6: Patikrinkite žemo lygio CFB struktūrą
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()Dažnos problemos ir sprendimai
CFBError įkeliant
Failas nėra galiojantis CFB konteineris. Patikrinkite, ar tai tikras Outlook MSG failas, o ne EML.
Kūnas tuščias, bet HTML kūnas turi turinį
Kai kurie pranešimai saugo turinį tik HTML. Patikrinkite msg.body_html, kai msg.body grąžina None.
Patikrinimo įspėjimai
Pasiekite msg.validation_issues, kad pamatytumėte įkeltos bylos atitikties įspėjimų rinkinį.
Dažnai užduodami klausimai (DUK)
Ar galiu skaityti EML failus?
Ne tiesiogiai. Biblioteka apdoroja MSG (CFB) formatą. Pirmiausia konvertuokite EML turinį į EmailMessage objektą, tada naudokite MapiMessage.from_email_message().
Ar įkėlimas perskaito visus priedo duomenis į atmintį?
Ne. Priedo metaduomenys skaitomi pagal poreikį. Naudokite iter_attachments_info() lengvai iteracijai.
Ar tai yra gijų saugu?
Kiekviena MapiMessage egzempliorius yra nepriklausomas. Kartu vykdomi skaitymai iš atskirų egzempliorių yra saugūs.