Introduction

Aspose.Email FOSS for Python is now available on PyPI: a free, MIT-licensed library for creating, reading, and converting Outlook .msg fichiers entièrement en Python, sans dépendance à Microsoft Office ou à aucune extension native. Installez-le avec pip install aspose-email-foss>=26.3 et commencez à travailler immédiatement avec les conteneurs MSG et CFB.

La bibliothèque cible Python 3.10 et versions ultérieures. Elle implémente le format Compound File Binary (CFB) et le format de message MSG à partir de zéro, vous offrant un contrôle déterministe sur la sérialisation et la lecture des courriels. Comme l’implémentation est purement Python, elle s’exécute de manière identique sous Windows, macOS, Linux et dans des environnements conteneurisés.

Aspose.Email FOSS is designed for developers building email processing pipelines, compliance archival tools, forensic analysis workflows, or any application that needs to create or inspect Outlook-compatible message files without a running Exchange or Outlook installation.


Fonctionnalités clés

Créer des fichiers MSG

Construisez des fichiers compatibles Outlook .msg à partir de zéro en utilisant MapiMessage.create(). Définissez les propriétés MAPI standard telles que l’objet, l’expéditeur, l’heure de livraison et les champs d’affichage via le PropertyId enum. Ajoutez des destinataires avec add_recipient() et des pièces jointes avec add_attachment(), puis enregistrez le résultat sur le disque.

from aspose.email_foss import msg

message = msg.MapiMessage.create(
    "Quarterly status update and rollout plan",
    "Hello team,\n\nPlease find the latest rollout summary attached.\n\nRegards,\nEngineering",
)

message.set_property(msg.PropertyId.SENDER_NAME, "Build Agent")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "build.agent@example.com")
message.set_property(msg.PropertyId.INTERNET_MESSAGE_ID, "<example-001@example.com>")

message.add_recipient("alice@example.com", display_name="Alice Example")
message.add_recipient("bob@example.com", display_name="Bob Example")
message.add_recipient(
    "carol@example.com",
    display_name="Carol Example",
    recipient_type=msg.RECIPIENT_TYPE_CC,
)

message.add_attachment("hello.txt", b"sample attachment\n", mime_type="text/plain")
message.save("example-message.msg")

Lire et convertir MSG en EML

Chargez un fichier existant .msg avec MapiMessage.from_file() et convertissez-le en un Python standard EmailMessage objet via to_email_message(). À partir de là, sérialisez en octets EML pour le stockage ou le transfert via SMTP.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("example-message.msg") as loaded:
    email_message = loaded.to_email_message()
    eml_bytes = email_message.as_bytes()

with open("example-message.eml", "wb") as f:
    f.write(eml_bytes)

Inspecter les détails internes du MSG

Utilisez MsgReader et son sous-jacent CFBReader pour inspecter la structure binaire d’un fichier MSG. Accédez aux métadonnées CFB (version, taille du secteur, nombre d’entrées de répertoire) et parcourez les entrées de propriétés MAPI au niveau binaire.

from aspose.email_foss import msg

reader = msg.MsgReader.from_file("example-message.msg")
cfb = reader.cfb_reader

print(f"CFB major_version={cfb.major_version}")
print(f"sector_size={cfb.sector_size}")
print(f"directory_entries={cfb.directory_entry_count}")

for entry in reader.iter_top_level_fixed_length_properties():
    tag = entry.property_tag
    print(f"tag=0x{tag:08X} flags=0x{entry.flags:08X} value={entry.value.hex()}")

reader.close()

Accès CFB de bas niveau

Lisez et parcourez tout conteneur Compound File Binary en utilisant CFBReader. Énumérez les stockages et les flux, résolvez les chemins par nom, et extrayez les données brutes du flux pour un traitement personnalisé.

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("example-message.msg")

for entry in reader.iter_storages():
    print(f"Storage: {entry.name}")

for entry in reader.iter_streams():
    data = reader.get_stream_data(entry.stream_id)
    print(f"Stream: {entry.name} size={len(data)}")

reader.close()

Démarrage rapide

Installez la bibliothèque et créez votre premier fichier MSG en moins de dix lignes:

pip install aspose-email-foss>=26.3
from aspose.email_foss import msg

message = msg.MapiMessage.create("Hello from Python", "This is a test message.")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "sender@example.com")
message.add_recipient("recipient@example.com", display_name="Recipient")
message.save("hello.msg")

with msg.MapiMessage.from_file("hello.msg") as loaded:
    eml = loaded.to_email_message()
    print(eml["Subject"])

Formats pris en charge

FormatImporterExporter
MSGOuiOui
CFBOuiOui

Open Source & Licences

Aspose.Email FOSS for Python is released under the MIT License. Vous pouvez l’utiliser dans des projets personnels, internes et commerciaux sans restriction. Le code source est disponible sur GitHub.


Premiers pas