Introduksjon

Aspose.Email FOSS for Python is now available on PyPI: a free, MIT-licensed library for creating, reading, and converting Outlook .msg filer helt i Python, uten avhengighet til Microsoft Office eller noen native‑utvidelse. Installer den med pip install aspose-email-foss>=26.3 og begynn å jobbe med MSG‑ og CFB‑containere umiddelbart.

Biblioteket retter seg mot Python 3.10 og nyere. Det implementerer Compound File Binary (CFB)-formatet og MSG-meldingsformatet fra bunnen av, og gir deg deterministisk kontroll over hvordan e‑postmeldinger serialiseres og leses. Siden implementeringen er ren Python, kjører den identisk på Windows, macOS, Linux og i containeriserte miljøer.

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.


Nøkkelfunksjoner

Opprett MSG‑filer

Bygg Outlook‑kompatible .msg filer fra bunnen av ved hjelp av MapiMessage.create(). Angi standard MAPI‑egenskaper som emne, avsender, leveringstid og visningsfelt via PropertyId enum. Legg til mottakere med add_recipient() og filvedlegg med add_attachment(), og lagre deretter resultatet til disk.

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

Les og konverter MSG til EML

Last inn en eksisterende .msg fil med MapiMessage.from_file() og konverter den til en standard Python EmailMessage objekt via to_email_message(). Derfra serialiseres til EML‑bytes for lagring eller videresending 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)

Inspiser MSG‑internt

Bruk MsgReader og dens underliggende CFBReader for å inspisere den binære strukturen i en MSG‑fil. Få tilgang til CFB‑metadata (versjon, sektorstørrelse, antall katalogoppføringer) og iterer over MAPI‑egenskapsoppføringer på binært nivå.

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

Lavnivå CFB‑tilgang

Les og traverser enhver Compound File Binary-beholder ved hjelp av CFBReader. List opp lagringer og strømmer, løs opp stier etter navn, og hent ut rå strømmedata for tilpasset behandling.

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

Rask start

Installer biblioteket og opprett din første MSG‑fil på under ti linjer:

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

Støttede formater

FormatImportEksport
MSGJaJa
CFBJaJa

Åpen kilde og lisensiering

Aspose.Email FOSS for Python is released under the MIT License. Du kan bruke den i personlige, interne og kommersielle prosjekter uten restriksjon. Kildekoden er tilgjengelig på GitHub.


Kom i gang