Úvodní článek
Programatické analyzování e-mailových zpráv je běžnou podmínkou pro migraci dat, archivní pracovní postupy a nástroje pro dodržování. Soubory Outlook MSG používají formát kontejnerů Compound File Binary (CFB) s vlastnostmi MAPI k kódování metadaten zprávy, obsahu těla, příjemců a přílohy. Práce s tímto formatem v Pythonu tradičně vyžadovala buď komerční knihovny nebo manipulaci binárních souborů na nízké úrovni.
Úřad pro bezpečnost a ochranu zdraví aspose-email-foss balíček poskytuje čistý Python, MIT-licencované knihovny pro čtení, vytváření a konverzi souborů Outlook MSG. Vystavuje vysokostupné MapiMessage API pro běžné úkoly vedle nízké úrovně MsgReader knihovna vyžaduje Python 3.10 nebo novější a nemá žádné nativní závislosti.
Ať už potřebujete extrahovat předmětovou řádku a tělo z sady archivovaných zpráv, vyčíslit přílohy pro indexování nebo převést soubory MSG do standardního formátu RFC 5322, tato knihovna zvládá binární analýzu, abyste se mohli soustředit na logiku aplikace.
Co se v ní nachází?
Čtení souborů MSG pomocí MapiMessage
Úřad pro bezpečnost a ochranu zdraví MapiMessage class je primární vstupní bod pro analýzu souborů Outlook MSG. Otevřete soubory, přistupujte k jejich vlastnostem a čistě je uzavřte pomocí kontextového manažera.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("meeting-invite.msg") as message:
print(f"Subject: {message.subject}")
print(f"Body: {message.body[:200]}")
print(f"HTML body available: {message.body_html is not None}")
Úřad pro bezpečnost a ochranu zdraví from_file metoda čte kontejner CFB, analyzuje toky vlastností MAPI a vyplňuje typované atributy. subject, body,a) body_html Vlastnosti vrátí dekódované řetězce přímo.
Vytvoření příjemců
Každý soubor MSG ukládá informace o příjemci v vyhrazených úložištích MAPI. MapiMessage.recipients Vlastnost vrací seznam: MapiRecipient objekty s typovanými poli pro zobrazení jména, e-mailové adresy a typu příjemce (TO, CC nebo BCC).
from aspose.email_foss import msg
with msg.MapiMessage.from_file("team-update.msg") as message:
for recipient in message.recipients:
print(
f"{recipient.display_name} <{recipient.email_address}> "
f"type={recipient.recipient_type}"
)
Práce s přílohami
Úřad pro bezpečnost a ochranu zdraví iter_attachments_info výnosy metodou MapiAttachment objekty, které poskytují název souboru, surové bajty a MIME typ pro vnitřní obrázky.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("report.msg") as message:
for att in message.iter_attachments_info():
print(f" {att.filename} ({att.mime_type}, {len(att.data)} bytes)")
if att.content_id:
print(f" inline content-id: {att.content_id}")
Přístup k vlastnostem MAPI
Pro scénáře, které vyžadují specifické hodnoty vlastností MAPI nad rámec atributů pohodlí, použijte: get_property_value s výjimkou: PropertyId To poskytuje přímý přístup k jakémukoli vlastnictví uloženému v souboru MSG.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("notification.msg") as message:
sender = message.get_property_value(msg.PropertyId.SENDER_NAME)
email = message.get_property_value(msg.PropertyId.SENDER_EMAIL_ADDRESS)
delivery = message.get_property_value(msg.PropertyId.MESSAGE_DELIVERY_TIME)
print(f"From: {sender} <{email}>")
print(f"Delivered: {delivery}")
Iterování všech vlastností
Když potřebujete zkontrolovat každou vlastnost v zprávy (pro debugging, audit nebo migraci), iter_properties výnosy metodou MapiProperty objekty s úplnými informacemi o značkách a hodnotách.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("sample.msg") as message:
for prop in message.iter_properties():
print(
f"tag=0x{prop.property_tag:08X} "
f"type=0x{prop.property_type:04X} "
f"value={prop.value!r}"
)
Konverze MSG na EML
Úřad pro bezpečnost a ochranu zdraví to_email_message metoda konvertuje analyzovaný MSG do standardního Pythonu. email.message.EmailMessage Objekt. Odtud můžete serializovat zprávu do formátu RFC 5322 (EML) pomocí standardní knihovny.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("archive.msg") as message:
email_message = message.to_email_message()
eml_bytes = email_message.as_bytes()
with open("archive.eml", "wb") as f:
f.write(eml_bytes)
Všimněte si, že výstup EML používá vestavěný Python. email Knihovna zvládá konverzi MSG-to-MAPI-na-EmailMessage; standardní knihovny zachází s formátem RFC 5322.
Rychlý start
Nainstalujte balíček z PyPI a analyzujte svůj první soubor MSG v méně než 20 řádcích:
# Install: pip install aspose-email-foss>=26.3
from aspose.email_foss import msg
# Create a new message
message = msg.MapiMessage.create(
"Project status update",
"Hello team,\n\nPlease review the attached report.\n\nRegards",
)
message.add_recipient("alice@example.com", display_name="Alice")
message.add_attachment("notes.txt", b"meeting notes\n", mime_type="text/plain")
message.save("status-update.msg")
# Read it back and extract data
with msg.MapiMessage.from_file("status-update.msg") as loaded:
print(f"Subject: {loaded.subject}")
print(f"Recipients: {len(loaded.recipients)}")
for att in loaded.iter_attachments_info():
print(f"Attachment: {att.filename} ({len(att.data)} bytes)")
Podporované formáty
| Formát | Rozšíření | Čtěte. | Píšeš. |
|---|---|---|---|
| Outlook MSG | .msg | Ano , ano . | Ano , ano . |
| Binární soubor složeného souboru | .cfb | Ano , ano . | Ano , ano . |
| EML (přípravou konverze) | .eml | Ano (prostřednictvím: from_email_message) | Ano (prostřednictvím: to_email_message) |
Podpora EML funguje prostřednictvím konverze: MapiMessage.from_email_message() dovoz z Pythonu email.message.EmailMessage předmět a to_email_message() Přímé analyzování souborů EML není k dispozici standardní knižnice se zabývá formátem EMl wire.
Open Source & Licence
Aspose.Email FOSS for Python is released under the MIT license. You are free to use, modify, and distribute the library in both commercial and non-commercial projects. The full source code is available on GitHub.
Knihovna je čistě Python implementace bez kompiliovaných rozšíření nebo nativních závislostí. Provozuje se na jakékoli platformě, která podporuje Python 3.10 nebo novější.
Jak začít?
Prozkoumejte více zdrojů pro práci s Aspose.Email FOSS for Python:
- Příručka pro vývojáře úplná dokumentace s výukovými instrukcemi a průvodci API
- Základní znalosti články s návodem a často kladené otázky
- Odkaz na API úplná referenční třída a metoda