Introductie

Aspose.Email FOSS for Python is now available on PyPI: a free, MIT-licensed library for creating, reading, and converting Outlook .msg bestanden volledig in Python, zonder afhankelijkheid van Microsoft Office of enige native extensie. Installeer het met pip install aspose-email-foss>=26.3 en begin onmiddellijk met MSG- en CFB-containers te werken.

De bibliotheek richt zich op Python 3.10 en hoger. Hij implementeert het Compound File Binary (CFB)‑formaat en het MSG‑berichtformaat vanaf de basis, waardoor je deterministische controle krijgt over hoe e‑mailberichten worden geserialiseerd en gelezen. Omdat de implementatie pure Python is, draait hij identiek op Windows, macOS, Linux en in gecontaineriseerde omgevingen.

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.


Belangrijkste functies

MSG‑bestanden maken

Bouw Outlook-compatibele .msg bestanden vanaf nul met behulp van MapiMessage.create(). Stel standaard MAPI-eigenschappen in zoals onderwerp, afzender, bezorgtijd en weergavevelden via de PropertyId enum. Voeg ontvangers toe met add_recipient() en bestandsbijlagen met add_attachment(), sla vervolgens het resultaat op naar schijf.

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

MSG lezen en converteren naar EML

Laad een bestaande .msg bestand met MapiMessage.from_file() en converteer het naar een standaard Python EmailMessage object via to_email_message(). Van daaruit serialiseer naar EML-bytes voor opslag of doorsturen 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)

MSG‑interne structuur inspecteren

Gebruik MsgReader en de onderliggende CFBReader om de binaire structuur van een MSG-bestand te inspecteren. Toegang tot CFB-metadata (versie, sectorgrootte, aantal directory‑items) en itereren over MAPI‑eigenschap‑items op binair niveau.

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

Low‑level CFB‑toegang

Lees en doorloop elke Compound File Binary-container met behulp van CFBReader. Enumerate opslagplaatsen en streams, los paden op op naam, en extraheer ruwe streamgegevens voor aangepaste verwerking.

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

Snelle start

Installeer de bibliotheek en maak je eerste MSG‑bestand in minder dan tien regels:

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

Ondersteunde formaten

FormaatImporterenExporteren
MSGJaJa
CFBJaJa

Open source en licensering

Aspose.Email FOSS for Python is released under the MIT License. U mag het gebruiken in persoonlijke, interne en commerciële projecten zonder beperking. De broncode is beschikbaar op GitHub.


Aan de slag