Com analitzar fitxers MSG amb Python
aspose-email-foss per a Python proporciona una API pure-Python per llegir fitxers Outlook MSG sense dependències de Microsoft Office. Carregueu un fitxer en un objecte MapiMessage per accedir a totes les dades del missatge.
Guia pas a pas
Pas 1: Instal·la el paquet
pip install aspose-email-fossRequereix Python 3.10 o posterior.
Pas 2: Importa la classe MapiMessage
from aspose.email_foss.msg import MapiMessagePas 3: Carrega un fitxer MSG
msg = MapiMessage.from_file("message.msg")Per a l’anàlisi tolerant de fitxers mal formats, passeu strict=False:
msg = MapiMessage.from_file("message.msg", strict=False)Pas 4: Accedir a les propietats del missatge
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}")Pas 5: Llista d’adjunts
for att in msg.iter_attachments_info():
name = att.storage_name
is_embedded = att.is_embedded_message
print(f"Attachment: {name}, embedded={is_embedded}")Pas 6: Inspecciona l’estructura CFB de baix nivell
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()Problemes comuns i solucions
CFBError quan es carrega
El fitxer no és un contenidor CFB vàlid. Verifiqueu que sigui un fitxer MSG d’Outlook real, no un EML.
El cos està buit però el cos HTML té contingut
Alguns missatges emmagatzemen el contingut només en HTML. Comproveu msg.body_html quan msg.body torni None.
Advertències de validació
Accedeix msg.validation_issues per veure una tupla d’avisos de compliment del fitxer carregat.
Preguntes freqüents (FAQ)
Puc llegir fitxers EML?
No directament. La biblioteca gestiona el format MSG (CFB). Converteix el contingut EML a un objecte EmailMessage primer, després utilitza MapiMessage.from_email_message().
La càrrega llegeix totes les dades de l’adjunt a la memòria?
No. Les metadades de l’adjunt es llegeixen a demanda. Utilitzeu iter_attachments_info() per a una iteració lleugera.
És thread-safe?
Cada instància MapiMessage és independent. Les lectures simultànies des de diferents instàncies són segures.