Introducere
Parsarea programată a mesajelor de e-mail este o cerință comună pentru migrarea datelor, fluxurile de lucru arhivate și instrumentele de conformitate. Fișierele Outlook MSG folosesc formatul containerului Compound File Binary (CFB) cu proprietăți MAPI pentru codificarea metadatei mesajului, conținutului corpului textului și atașamentelor. Lucrarea cu acest format în Python a necesitat tradițional fie biblioteci comerciale sau manipulare binară la nivel scăzut.
În ceea ce priveşte aspose-email-foss pachetul oferă o bibliotecă pur-Python, licențiată MIT pentru citirea, crearea și convertirea fișierelor Outlook MSG. Expune un alt nivel de securitate a datelor Microsoft Windows XP. MapiMessage API pentru sarcini comune de nivel inferior MsgReader Biblioteca necesită Python 3.10 sau mai târziu și nu are dependențe native.
Indiferent dacă aveți nevoie să extrageți linia de subiect și corpul dintr-un lot de mesaje arhivate, enumerarea atașamentelor pentru indexare sau convertirea fișierelor MSG în formatul standard RFC 5322, această bibliotecă se ocupă de analizarea binară astfel încât vă puteți concentra pe logica aplicației.
Ce înseamnă?
Citirea fișierelor MSG cu MapiMessage
În ceea ce priveşte MapiMessage class este punctul principal de intrare pentru analizarea fișierelor Outlook MSG. Deschideți un fișier, accesați proprietățile sale și închideţi-l cu o gestionare a contextului.
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}")
În ceea ce priveşte from_file metoda citește containerul CFB, analizează fluxurile de proprietate MAPI și completează atributele tipate. subject, body, și body_html proprietățile retur strings decodate direct.
Extractarea beneficiarilor
Fiecare fișier MSG stochează informațiile destinatarilor în depozitele MAPI dedicate. MapiMessage.recipients proprietatea returnă o listă de: MapiRecipient obiectele cu câmpuri tipate pentru numele de afișare, adresa de e-mail și tipul destinatarului (TO, CC sau 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}"
)
Lucrarea cu anexele
În ceea ce priveşte iter_attachments_info randamente din metodă MapiAttachment Obiecte care furnizează numele fișierului, baiti raw, tip MIME și ID-ul opțional al conținutului pentru imaginile inline.
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}")
Accesarea proprietăților MAPI
Pentru scenariile care necesită valori specifice ale proprietății MAPI dincolo de atributele de confort, utilizați: get_property_value cu o PropertyId Acest lucru oferă acces direct la orice proprietate stocată în fișierul 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}")
Iterarea tuturor proprietăților
Când trebuie să inspectați fiecare proprietate într-un mesaj (pentru depurare, auditare sau migrare), iter_properties randamente din metodă MapiProperty obiectele cu informații complete despre etichetă și valoare.
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}"
)
Convertirea MSG în EML
În ceea ce priveşte to_email_message metoda converte un MSG analizat într-un Python standard email.message.EmailMessage Obiectul. De acolo puteți serializa mesajul în format RFC 5322 (EML) folosind biblioteca standard.
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)
Notă că ieșirea EML folosește Python încorporat email Biblioteca gestionează conversiunea MSG-to-MAPI-To-EmailMessage; biblioteca standard administrează formatul Wire RFC 5322.
Început rapid
Instalați pachetul de la PyPI și analizați primul fișier MSG în sub 20 linii:
# 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)")
Formatele suportate
| Formatul | Extindere | Citeşte. | Scrie . |
|---|---|---|---|
| Perspectiva MSG | .msg | Da, sunt. | Da, sunt. |
| Fişier binar compus | .cfb | Da, sunt. | Da, sunt. |
| EML (prin conversie) | .eml | Da (prin intermediul from_email_message) | Da (prin intermediul to_email_message) |
Suportul EML funcționează prin conversie: MapiMessage.from_email_message() importuri de la un Python email.message.EmailMessage obiectul și to_email_message() Biblioteca standard gestionează formatul EML wire.
Open Source & Licențiere
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.
Biblioteca este o implementare Python pură, fără extensii compilate sau dependențe native. Ea rulează pe orice platformă care suportă Python 3.10 sau mai târziu.
Cum să începem?
Explorați mai multe resurse pentru a lucra cu Aspose.Email FOSS pentru Python:
- Ghidul dezvoltatorilor documentație completă cu tutoriale și ghiduri API
- Baza de cunoştinţe articole cu instrucţiuni şi întrebări frecvente
- Referință API referință completă la clasă și metodă