Introducció
L’anàlisi de missatges d’e-mail programàticament és un requisit comú per a la migració de dades, els fluxos de treball d ‘arxiu i les eines de compliment. Els arxius Outlook MSG utilitzen el format de contenidor Compound File Binary (CFB) amb propietats MAPI per codificar metadades de missatge, contingut del cos, destinataris i adjunts. Treballar amb aquest format en Python ha requerit tradicionalment biblioteques comercials o manipulació binària de baix nivell.
El aspose-email-foss El paquet proporciona una biblioteca pura Python, amb llicència MIT per llegir, crear i convertir arxius Outlook MSG. Exposeix un alt nivell de codi d’arxiu en Microsoft Office Access. MapiMessage API per a tasques comunes al costat de les de nivell inferior MsgReader L’accés per a una inspecció detallada de l’estructura CFB subjacent. La biblioteca requereix Python 3.10 o posterior i no té dependències natives.
Si necessites extraure la línia d’assignatura i el cos d"un batx de missatges arxivats, enumerar apanyaments per a indexar o convertir fitxers MSG al format RFC 5322 estàndard, aquesta biblioteca s’encarrega del parseig binari perquè puguis concentrar-te en la teva lògica d’“aplicació”.
Què inclou?
Llegir arxius MSG amb MapiMessage
El MapiMessage class és el punt d’entrada principal per a l’anàlisi de fitxers MSG d"Outlook. Obre un arxiu, accedeix a les seves propietats i tanca-lo net amb un gestor de contextos.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("meeting-invite.msg") as message:
print(f"Subject: {message.subject}")
print(f"Body: {message.body[:200]}")
print(f"HTML body available: {message.body_html is not None}")
El from_file El mètode llegeix el contenidor CFB, analisa els fluxos de propietats MAPI i omplea atributs tipus. subject, body, i body_html les propietats retornen directament cadenes decodificades.
Extrar els destinataris
Cada fitxer MSG emmagatzemà la informació del receptor en emmagazinatges MAPI dedicats. MapiMessage.recipients La propietat retorna una llista de: MapiRecipient objectes amb camps digitats per a nom d’exhibició, adreça de correu electrònic i tipus de destinatari (TO, CC o BCC).
from aspose.email_foss import msg
with msg.MapiMessage.from_file("team-update.msg") as message:
for recipient in message.recipients:
print(
f"{recipient.display_name} <{recipient.email_address}> "
f"type={recipient.recipient_type}"
)
Treballar amb els apendicis
El iter_attachments_info rendiments del mètode MapiAttachment objectes que proporcionen el nom de fitxer, bytes brut, tipus MIME i Content-ID opcional per a imatges en línia.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("report.msg") as message:
for att in message.iter_attachments_info():
print(f" {att.filename} ({att.mime_type}, {len(att.data)} bytes)")
if att.content_id:
print(f" inline content-id: {att.content_id}")
Accedir a les propietats MAPI
Per a escenaris que requereixen valors de propietat MAPI específics més enllà dels atributs de conveniència, utilitzar get_property_value amb una PropertyId Això proporciona accés directe a qualsevol propietat emmagatzemada en el fitxer MSG.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("notification.msg") as message:
sender = message.get_property_value(msg.PropertyId.SENDER_NAME)
email = message.get_property_value(msg.PropertyId.SENDER_EMAIL_ADDRESS)
delivery = message.get_property_value(msg.PropertyId.MESSAGE_DELIVERY_TIME)
print(f"From: {sender} <{email}>")
print(f"Delivered: {delivery}")
Iterar totes les propietats
Quan necessiteu inspeccionar cada propietat en un missatge (per a depuració, auditoria o migració), el sistema de correcció d’errors és: iter_properties rendiments del mètode MapiProperty objectes amb informació completa de les etiquetes i els valors.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("sample.msg") as message:
for prop in message.iter_properties():
print(
f"tag=0x{prop.property_tag:08X} "
f"type=0x{prop.property_type:04X} "
f"value={prop.value!r}"
)
Conversió de MSG en EML
El to_email_message Metode converteix un MSG analitzat en Python estàndard. email.message.EmailMessage Des d’allà pots serialitzar el missatge al format RFC 5322 (EML) utilitzant la biblioteca estàndard.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("archive.msg") as message:
email_message = message.to_email_message()
eml_bytes = email_message.as_bytes()
with open("archive.eml", "wb") as f:
f.write(eml_bytes)
Note que la sortida EML utilitza el programari integrat de Python. email La biblioteca s’encarrega de la conversió MSG-a-MAPI-à-EmailMessage; la biblioteca estàndard gestiona el format RFC 5322 wire.
Inici ràpid
Instala el paquet des de PyPI i analisa el teu primer fitxer MSG en menys de 20 línies:
# Install: pip install aspose-email-foss>=26.3
from aspose.email_foss import msg
# Create a new message
message = msg.MapiMessage.create(
"Project status update",
"Hello team,\n\nPlease review the attached report.\n\nRegards",
)
message.add_recipient("alice@example.com", display_name="Alice")
message.add_attachment("notes.txt", b"meeting notes\n", mime_type="text/plain")
message.save("status-update.msg")
# Read it back and extract data
with msg.MapiMessage.from_file("status-update.msg") as loaded:
print(f"Subject: {loaded.subject}")
print(f"Recipients: {len(loaded.recipients)}")
for att in loaded.iter_attachments_info():
print(f"Attachment: {att.filename} ({len(att.data)} bytes)")
Formats suportats
| Format de la pàgina | Extensió | Llegeix. | Escriure |
|---|---|---|---|
| Perspectiva MSG | .msg | Sí, sí. | Sí, sí. |
| Arxiu binari compost | .cfb | Sí, sí. | Sí, sí. |
| EML (per conversió) | .eml | Sí (via from_email_message) | Sí (via to_email_message) |
El suport EML funciona mitjançant la conversió: MapiMessage.from_email_message() importacions d’un Python email.message.EmailMessage objecte, i to_email_message() L’anàlisi directa de fitxers EML no es proporciona la biblioteca estàndard gestiona el format d’EML wire.
Fonte oberta i llicències
Aspose.Email FOSS for Python is released under the MIT license. You are free to use, modify, and distribute the library in both commercial and non-commercial projects. The full source code is available on GitHub.
La biblioteca és una implementació de Python pura sense extensions compilades ni dependències natives. Corre en qualsevol plataforma que suporta Python 3.10 o més tard.
Com començar a treballar
Explora més recursos per treballar amb Aspose.Email FOSS per a Python:
- Guia de desenvolupadors documentació completa amb tutorials i guies d’API.
- Base de coneixement articles de guia i preguntes freqüents
- Referència a l’API Referència completa de classe i mètode