Kaip analizuoti MSG failus Python kalba

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

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

 Lietuvių