Kuinka jäsentää MSG‑tiedostoja Pythonilla

Kuinka jäsentää MSG‑tiedostoja Pythonilla

aspose-email-foss for Python tarjoaa puhtaan Python-API:n Outlook MSG -tiedostojen lukemiseen ilman Microsoft Office -riippuvuuksia. Lataa tiedosto MapiMessage-objektiin päästäksesi kaikkiin viestin tietoihin.

Vaiheittainen opas

Vaihe 1: Asenna paketti

pip install aspose-email-foss

Vaatii Python 3.10 tai uudemman.


Vaihe 2: Tuo MapiMessage-luokka

from aspose.email_foss.msg import MapiMessage

Vaihe 3: Lataa MSG-tiedosto

msg = MapiMessage.from_file("message.msg")

Sallivan virheellisten tiedostojen jäsentämisen saamiseksi, anna strict=False:

msg = MapiMessage.from_file("message.msg", strict=False)

Vaihe 4: Viestin ominaisuuksien tarkastelu

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}")

Vaihe 5: Listaa liitteet

for att in msg.iter_attachments_info():
    name = att.storage_name
    is_embedded = att.is_embedded_message
    print(f"Attachment: {name}, embedded={is_embedded}")

Vaihe 6: Tarkastele alitasoa CFB-rakennetta

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()

Yleisiä ongelmia ja korjauksia

CFBError latauksen aikana

Tiedosto ei ole kelvollinen CFB-säiliö. Varmista, että se on todellinen Outlook MSG -tiedosto, eikä EML.

Runko on tyhjä, mutta HTML-runko sisältää sisältöä

Jotkut viestit tallentavat sisällön vain HTML-muodossa. Tarkista msg.body_html kun msg.body palauttaa None.

Validointivaroitukset

Avaa msg.validation_issues nähdäksesi ladatun tiedoston noudattamisvaroitusten tuple.


Usein kysytyt kysymykset (UKK)

Voinko lukea EML‑tiedostoja?

Ei suoraan. Kirjasto käsittelee MSG (CFB) -formaattia. Muunna EML-sisältö EmailMessage-objektiksi ensin, sitten käytä MapiMessage.from_email_message().

Ladataanko kaikki liitetiedoston data muistiin?

Ei. Liitteen metatiedot luetaan pyynnöstä. Käytä iter_attachments_info() kevyessä iteraatiossa.

Onko se säikeiturvallinen?

Jokainen MapiMessage-instanssi on itsenäinen. Samanaikaiset lukemiset eri instansseista ovat turvallisia.

 Suomi