Úvodní článek
Aspose.Email FOSS for Python is a free, MIT-licensed library for creating, reading, and konverze souborů s Outlookem kompatibilních zpráv v čistém Pythonu. Dostupné na PyPI jako aspose-email-foss, funguje na Windows, macOS, Linuxu, Docker a bezserverových prostředích. bez závislosti na Microsoft Office a bez vlastního runtime.
Knihovna pokrývá dvě hlavní oblasti: vrstvu MAPI na vysoké úrovni (MapiMessage) pro práci s předměty, tělesami, příjemci a přílohy zpráv; a nízkonastorovou strukturální analýzou. vrstva (MsgReader, CFBReader, CFBStorage, CFBStream) které vystavuje surovou sloučeninu. Soubory binární kontejnery, které podporují každý soubor. .msg - Soubor.
Tento článek prochází klíčovými funkcemi dodanými ve verzi 26.3, založenou na potvrzeném povrchu API.
Klíčové prvky
Vytvoření vzkazů na vysoké úrovni pomocí MapiMessage
MapiMessage je primární vstupní bod pro vytváření zpráv kompatibilních s Outlookem ze systému Zavolej. MapiMessage.create() s předmětem a tělem, přidejte příjemce a Přílohy, pak se uloží přímo na .msg - Soubor.
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")
Čtení a kontrola souborů MSG
MsgReader poskytuje strukturovaný přístup k existujícímu systému sítě, který je v současnosti dostupný na internetových stránkách. .msg soubor bez úplného načtení. do výše uvedených bodů: MapiMessage.Vystavuje záznamy o nejvyšších úrovních majetku, ukládání příjemců a souborové skladování jednotlivé, což je praktické pro velké inspekce a validační potrubí.
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: Naložit, změnit a ušetřit
Protože… MapiMessage podložky from_file() pro nakládku a save() pro psaní, plné read-modify-write cyklus vyžaduje jen několik řádků. jmenované vlastnosti, zadané enumy a Unicode řetězové manipulace jsou k dispozici prostřednictvím set_property, PropertyId,a) 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 Konverze
MapiMessage.to_email_message() přeměňuje nabitý MSG do standardního Pythonu. email.message.EmailMessage objekt, který umožňuje export do RFC 5322 .eml formát pomocí V opačném směru (MapiMessage.from_email_message()) konstrukce a) MapiMessage z roku 2000 do roku 2006 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")
Procházení kontejnerů CFB
Každý. .msg soubor je kontejner pro složité binární soubory (CFB). CFBReader poskytuje: read-only přístup k stromku adresářů, což vám umožní seznam ukládání a toky, procházka po hierarchii a extrahovat surové byty toku bez spoléhání se na 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}]")
Zpracování připojených položek
Přílohy jsou přidávány prostřednictvím: MapiMessage.add_attachment() (pro binární data) nebo MapiMessage.add_embedded_message_attachment() (pro vnitřní zprávy MSG). přijímá jméno souboru, surové bajty a volitelný typ MIME.
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")
Rychlý start
pip install aspose-email-fossfrom 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)
Podporované formáty
| Formát | Rozšíření | Čtěte. | Píšeš. |
|---|---|---|---|
| Binární soubor složeného souboru | .cfb | ✓ | ✓ |
| Sdělení Outlook | .msg | ✓ | ✓ |
| EML / RFC 5322 | .eml | ✓ | ✓ |
Open Source & Licence
Aspose.Email FOSS for Python is released under the MIT License. The source repository is k dispozici na: Github.com/aspose-email-foss (v angličtině) a Zásada se zveřejňuje na PyPI jako: aspose-email-foss. Komerční použití, úprava a Přerozdělování je povoleno podle podmínek MIT.