Uvod u članak
Programski analiziranje e-poštenih poruka je uobičajen zahtjev za migraciju podataka, arhivirane radne tokove i alate za usklađenost. Outlook MSG datoteke koriste format kontejnera Compound File Binary (CFB) s svojstvima MAPI za kodiranje metapodataka poruke, sadržaja tijela, primaoca i priložbi. Rad sa ovim formatom u Pythonu tradicionalno zahtijeva ili komercijalne knjižnice ili manipulaciju binarnim podacima niskog nivoa.
U skladu s člankom 1. aspose-email-foss paket pruža čist-Python, MIT licenciran biblioteku za čitanje, stvaranje i pretvaranje Outlook MSG datoteka. To izloži visoko razredne MapiMessage API za zajedničke zadatke uz zadaće nižeg razine MsgReader Biblioteka zahtijeva Python 3.10 ili noviji i nema izvorne ovisnosti.
Bez obzira na to treba li izvući rubriku i tijelo iz serije arhiviranih poruka, prebrojati priložene datoteke za indeksiranje ili pretvoriti MSG datotekama u standardni format RFC 5322, ova knjižnica rukovodi binarnim analizom tako da se možete usredotočiti na logiku aplikacije.
Što je uključeno u to?
Čitanje MSG datoteka s MapiMessageom
U skladu s člankom 1. MapiMessage class je primarna ulazna točka za analizu Outlook MSG datoteka. Otvorite datotek, pristupite njezinim svojstvima i zatvorite ga čisto pomoću upravitelja konteksta.
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}")
U skladu s člankom 1. from_file Metod čita CFB kontejner, analizira MAPI tokove svojstva i popunjuje tipizirane atribute. subject, body, i body_html Properties vraća dekodirane niže direktno.
Izvlačenje primatelja
Svaka MSG datoteka pohranjuje informacije o primatelju u namjenskim MAPI skladištima. MapiMessage.recipients Vrati popis: MapiRecipient objekte s natpisanim poljima za ime prikaza, e-mail adresu i tip primatelja (TO, CC ili 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}"
)
Rad s prilozima
U skladu s člankom 1. iter_attachments_info proizvodnja u skladu s metodom MapiAttachment U ovom slučaju, u skladu s člankom 16. stavkom 1. točkom (a) ovog članka, podnositelj zahtjeva može na temelju postupka iz stavka 2. točke (b) Uredbe Komisije (EU) br. 1071/2013 utvrditi:.
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}")
Pristup svojstvima MAPI-a
U slučaju da se u skladu s člankom 4. stavkom 1. točkom (a) i podstavka 2. stavku 3. primjenjuje: get_property_value s: PropertyId To pruža direktan pristup svim svojstvima pohranjenim u MSG datoteku.
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}")
Iteriranje svih svojstava
Kada morate pregledati svaku svojinu u poruku (za debugging, auditing ili migraciju), iter_properties proizvodnja u skladu s metodom MapiProperty objekte s punim informacijama o oznakama i vrijednostima.
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}"
)
Preobražavanje MSG-a u EML
U skladu s člankom 1. to_email_message metoda pretvara analizirani MSG u standardni Python email.message.EmailMessage Odatle možete serijalno prikazati poruku u RFC 5322 (EML) format koristeći standardnu knjižnicu.
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)
Napomena da EML izlaz koristi Python je ugrađen u email Modul za serijalizaciju. Biblioteka rukovodi konverzijom MSG-to-MAPI-To-EmailMessage; standardna knjižnica rukovođa formatom RFC 5322 Wire.
Brzi početak
Instaliraj paket iz PyPI-a i razredaj svoju prvu MSG datoteku u manje od 20 redaka:
# 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)")
Podržani formati
| Format: | Proračunska sredstva | Čitaj. | Pišite. |
|---|---|---|---|
| Izvješće MSG | .msg | - Da, u redu. | - Da, u redu. |
| Komponirana datoteka binarna | .cfb | - Da, u redu. | - Da, u redu. |
| U slučaju da je to moguće, primjenite sljedeće: | .eml | Da (preko: from_email_message) | Da (preko: to_email_message) |
Podrška EML-u radi putem konverzije: MapiMessage.from_email_message() uvoz iz Python-a email.message.EmailMessage predmet, i to_email_message() Direktno analiziranje EML datoteke nije omogućeno standardna knjižnica upravlja formatom za EMl žice.
Otvoreni izvor i licenciranje
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.
Biblioteka je čisto Python implementacija bez kompiliranih proširenja ili izvornih ovisnosti. Radi na bilo kojoj platformi koja podržava Python 3.10 ili noviji.
Početak
Pronađite više resursa za rad s Aspose.Email FOSS for Python:
- Vodič za programere potpuna dokumentacija s tutorijalima i API-jem.
- Osnova znanja članci o tome kako i često postavljana pitanja
- Odgovor na API potpuna referenca za razred i metodu