Introduction

Partage de messages électroniques programmés est un besoin commun pour la migration des données, les flux de travail d’archivage et les outils de conformité. Outlook MSG fichiers utilisent le format de conteneur Compound File Binary (CFB) avec les propriétés MAPI pour coder les métadonnées du message, le contenu corporel, récepteurs, et annexes. Travailler avec ce format en Python a traditionnellement nécessité soit bibliothèques commerciales ou manipulations binaires à faible niveau.

Le aspose-email-foss Le package fournit une bibliothèque pure Python, MIT agréé pour la lecture, la création et la conversion des fichiers MSG Outlook. MapiMessage API pour les tâches communes à côté du niveau inférieur MsgReader L’accès pour une inspection détaillée de la structure CFB sous-jacente.La bibliothèque nécessite Python 3.10 ou plus tard et n’a pas de dépendances autochtones.

Que vous ayez besoin d’extraire la ligne et le corps de sujet d’un ensemble de messages archivés, d ́enumer les annexes pour l ́indexation ou de convertir des fichiers MSG au format RFC 5322 standard, cette bibliothèque gère le partage binaire afin que vous puissiez vous concentrer sur votre logique de application.


Ce qui est inclus

Lire les fichiers MSG avec MapiMessage

Le MapiMessage classe est le point d’entrée principal pour partage les fichiers MSG Outlook. Ouvrez un fichier, accédez à ses propriétés et fermez-le de manière propre avec un gestionnaire du contexte.

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

Le from_file La méthode lit le conteneur CFB, parse les flux de propriété MAPI et populate les attributs typés. subject, body,et body_html Les propriétés retournent les filets décodés directement.

Extrait des récipients

Chaque fichier MSG stocke les informations du destinataire dans des stockages MAPI dédiés. MapiMessage.recipients La propriété remet une liste de MapiRecipient Objets avec des champs typés pour le nom d’affichage, l’adresse e-mail et le type de destinataire (TO, CC ou 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}"
        )

Travailler avec des attachements

Le iter_attachments_info méthode rendu MapiAttachment Objets qui fournissent le nom de fichier, les bytes crus, le type MIME et l’ID contenu facultatif pour les images en ligne.

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

Propriétés MAPI Access

Pour les scénarios qui nécessitent des valeurs propriétés spécifiques MAPI au-delà des attributs de convenance, utilisez get_property_value Avec A PropertyId Cela permet un accès direct à toute propriété stockée dans le fichier 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}")

- Télécharger toutes les propriétés

Lorsque vous devez inspecter chaque propriété dans un message (pour débouler, auditer ou migrer), le iter_properties méthode rendu MapiProperty Objets avec une information complète et de valeur.

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

Convertir MSG en EML

Le to_email_message Convertir un MSG parsé en Python standard email.message.EmailMessage Vous pouvez ensuite sérialiser le message au format RFC 5322 (EML) en utilisant la bibliothèque standard.

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)

Remarquez que la sortie EML utilise Python intégrée email La bibliothèque gère la conversion MSG-to-MAPI-à-Email; la bibliographie standard gères le format de fil RFC 5322 .


Démarrage rapide

Installez le package de PyPI et partez votre premier fichier MSG en moins de 20 lignes:

# 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 soutenus

FormatsExtensionLireÉcrire
Mise en œuvre MSG.msgOuiOui
Composé de fichier binaire.cfbOuiOui
EML (via conversion) et la transformation.emlOui (à travers le from_email_message)Oui (à travers le to_email_message)

Le support EML fonctionne par la conversion : MapiMessage.from_email_message() Les importations d’un Python email.message.EmailMessage objet, et to_email_message() Direct EML file partage n’est pas fourni - la bibliothèque standard gère le format de fil EM L.


Source ouverte et licence

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 bibliothèque est une mise en œuvre purement Python sans extensions compilées ou dépendances natives. elle fonctionne sur toute plate-forme qui soutient Python 3.10 ou plus tard.


Pour commencer

Découvrez plus de ressources pour travailler avec Aspose.Email FOSS pour Python:

Ressources associées