Introducere

Aspose.Email FOSS for Python is a free, MIT-licensed library for creating, reading, and convertiți fișierele de mesaje compatibile cu Outlook în Python pur. Disponibil pe PyPI ca aspose-email-foss, funcționează pe Windows, macOS, Linux, Docker și mediile fără server. fără dependență de Microsoft Office și fără runtime proprietar.

Biblioteca acoperă două domenii principale: un strat MAPI de nivel înalt (MapiMessage) pentru lucrarea în cadrul unei instituţii de stat. cu subiecte de mesaj, corpuri, destinatari și atașamente; și o structură la nivel scăzut a mesajelor. strat (MsgReader, CFBReader, CFBStorage, CFBStream) care expune Compozitul brut. Containere binare care susţin fiecare fişier. .msg Dosar.

Acest articol trece prin caracteristicile cheie livrate în versiunea 26.3, bazate pe suprafața API confirmată.


Caracteristici cheie

Crearea de mesaje la nivel înalt cu MapiMessage

MapiMessage este punctul principal de intrare pentru crearea mesajelor compatibile cu Outlook din Sună-mă. MapiMessage.create() cu un subiect și corp, adaugați destinatari și înregistrare directă la un .msg Dosar.

from aspose.email_foss import msg

message = msg.MapiMessage.create(
    "Quarterly status update",
    "Hello team,\n\nPlease review the attached summary.\n\nRegards,\nEngineering",
)

message.set_property(msg.PropertyId.SENDER_NAME, "Build Agent")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "agent@example.com")

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

message.add_attachment("report.txt", b"Summary content here.\n", mime_type="text/plain")
message.save("output.msg")

Citirea şi inspecţia fişierelor MSG

MsgReader oferă acces structurat la o reţea existentă de informaţii. .msg fişier fără încărcarea completă a acestuia. în o MapiMessage.Expune intrările de proprietate la nivel superior, depozitele destinatarilor și depozitele de atașament individual, ceea ce face posibilă inspecția în dosare mari și conducte de validare.

from aspose.email_foss import msg

with msg.MsgReader.from_file("output.msg") as reader:
    header = reader.top_level_header
    print(f"Recipients : {header.recipient_count}")
    print(f"Attachments: {header.attachment_count}")

    for entry in reader.iter_recipient_storages():
        _, props = reader.parse_subobject_property_stream(entry.stream_id)
        print(f"  Recipient storage {entry.name}: {len(props)} property entries")

MSG: încărcare, modificare și salvare

Pentru că… MapiMessage suporturi de apă from_file() pentru încărcare și save() pentru scris, o carte completă. ciclul read-modify-write necesită doar câteva linii. Proprietăți denumite, enume tipate și Unicode manipularea string sunt disponibile prin intermediul set_property, PropertyId, și MapiNamedProperty.

from aspose.email_foss import msg

with msg.MapiMessage.from_file("original.msg") as message:
    message.set_property(msg.PropertyId.SUBJECT, "Updated Subject")
    message.save("updated.msg")

EML / RFC 5322 Conversiune

MapiMessage.to_email_message() converte un MSG încărcat într-un Python standard email.message.EmailMessage Obiect, care permite exportul la RFC 5322 .eml format folosind Biblioteca standard. În direcţia inversă (MapiMessage.from_email_message()) construieste: a) în cazul de: MapiMessage din un EmailMessage.

from pathlib import Path
from aspose.email_foss import msg

with msg.MapiMessage.from_file("message.msg") as message:
    eml_bytes = message.to_email_bytes()
    Path("message.eml").write_bytes(eml_bytes)

# Reverse: load EML into MapiMessage
import email
raw_eml = Path("message.eml").read_bytes()
email_obj = email.message_from_bytes(raw_eml)
mapi = msg.MapiMessage.from_email_message(email_obj)
mapi.save("from_eml.msg")

CFB Traversal containerului

Fiecare .msg fișierul este un container Compound File Binary (CFB). CFBReader oferă: acces de lectură numai la arbore directory, permițându-vă să lista stocare și fluxuri, mergeți pe ierarhie, și extrage fluxul brut de byte fără a se baza pe MsgReader.

from aspose.email_foss.cfb import CFBReader

with CFBReader.from_file("message.msg") as reader:
    print(f"CFB version  : {reader.major_version}")
    print(f"Sector size  : {reader.sector_size}")

    for depth, entry in reader.iter_tree():
        indent = "  " * depth
        size = entry.stream_size if entry.is_stream() else "-"
        print(f"{indent}{entry.name}  [size={size}]")

Mâncare a atașamentului

Adăugarea anexelor prin intermediul: MapiMessage.add_attachment() (pentru datele binare) sau MapiMessage.add_embedded_message_attachment() (pentru mesajele cu MSG încastrate). Ambele metode sunt utilizate pentru a stabili dacă este necesar să se folosească un GMS. acceptă un nume de fișier, bați brute și un tip MIME opțional.

from aspose.email_foss import msg

message = msg.MapiMessage.create("Attachment demo", "See files below.")
message.add_attachment("data.csv", b"id,value\n1,100\n", mime_type="text/csv")

inner = msg.MapiMessage.create("Nested message", "This is embedded.")
message.add_embedded_message_attachment(inner, "nested.msg")
message.save("with_attachments.msg")

Început rapid

pip install aspose-email-foss
from aspose.email_foss import msg

# Create and save a minimal MSG
message = msg.MapiMessage.create("Hello World", "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")

# Load it back and convert to EML
with msg.MapiMessage.from_file("hello.msg") as loaded:
    print(loaded.get_property_value(msg.PropertyId.SUBJECT))
    eml = loaded.to_email_bytes()
    open("hello.eml", "wb").write(eml)

Formatele suportate

FormatulExtindereCiteşte.Scrie .
Fişier binar compus.cfb
Mesaj Outlook.msg
EML / RFC 5322.eml

Open Source & Licențiere

Aspose.Email FOSS for Python is released under the MIT License. The source repository is disponibilă la: Github.com/aspose-email-foss și a pachetul este publicat pe PyPI ca: aspose-email-foss.Utilizarea comercială, modificarea și redistribuirea sunt toate permise în termenii MIT.


Cum să începem?