Εισαγωγή
Aspose.Email FOSS for Python goes beyond basic message creation. The library exposes the full depth of the MAPI property model, letting you read, write, and query individual properties by ID and type. It handles recipients, attachments, and embedded messages as first-class objects, and provides bidirectional conversion between the MSG binary format and Python’s standard email.message.EmailMessage.
Σε επίπεδο κοντέινερ, ο αναγνώστης και ο συγγραφέας CFB σας παρέχουν ντετερμινιστικό έλεγχο πάνω σε έγγραφα Compound File Binary. Μπορείτε να διασχίσετε ιεραρχίες αποθήκευσης, να εξάγετε ακατέργαστα δεδομένα ροής, να δημιουργήσετε νέα κοντέινερ από το μηδέν και να τα σειριοποιήσετε ξανά σε bytes. Και CFBError και MsgError παρέχουν δομημένη διαχείριση εξαιρέσεων για κακοδιατυπωμένη είσοδο.
Αυτή η ανάρτηση περνάει από κάθε δυνατότητα με επαληθευμένα παραδείγματα κώδικα που προέρχονται απευθείας από το δικό της σύνολο δοκιμών και τα παραδείγματα σεναρίων της βιβλιοθήκης.
Τι Περιλαμβάνεται
Πρόσβαση σε Ιδιότητα MAPI
Κάθε αρχείο MSG χτίζεται πάνω σε ιδιότητες MAPI. MapiMessage εκθέτει set_property() και get_property() για εργασία με ιδιότητες βάσει της PropertyId τιμής enum. Χρησιμοποιήστε iter_properties() για απαρίθμηση όλων των ιδιοτήτων σε ένα μήνυμα, ή get_property_value() για άμεση ανάκτηση τιμής με προαιρετική αποκωδικοποίηση τύπου.
from aspose.email_foss import msg
message = msg.MapiMessage.create("Status report", "Weekly update attached.")
message.set_property(msg.PropertyId.SENDER_NAME, "Build Agent")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "build.agent@example.com")
message.set_property(msg.PropertyId.DISPLAY_TO, "Alice Example; Bob Example")
message.set_property(msg.PropertyId.DISPLAY_CC, "Carol Example")
message.set_property(msg.PropertyId.DISPLAY_BCC, "Ops Archive")
message.set_property(
msg.PropertyId.TRANSPORT_MESSAGE_HEADERS,
"X-Environment: production\nX-Workflow: weekly-report\n",
)
message.save("report.msg")
Για να διαβάσετε ξανά τις ιδιότητες από ένα υπάρχον αρχείο:
from aspose.email_foss import msg
with msg.MapiMessage.from_file("report.msg") as loaded:
print(f"Subject: {loaded.subject}")
print(f"Body: {loaded.body}")
for prop in loaded.iter_properties():
print(f"tag=0x{prop.property_tag:08X}")
Παραλήπτες και Συνημμένα
Προσθέστε παραλήπτες με add_recipient(), καθορίζοντας το εμφανιζόμενο όνομα και τον τύπο παραλήπτη (To, CC ή BCC). Συνημμένα αρχεία με add_attachment() χρησιμοποιώντας ακατέργαστα bytes και τύπο MIME. Για ενσωματωμένα μηνύματα, add_embedded_message_attachment() ενσωματώνει ένα πλήρες MapiMessage ως αντικείμενο παιδί μέσα στον γονέα.
from aspose.email_foss import msg
message = msg.MapiMessage.create("Team update", "See attached notes.")
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_recipient(
"archive@example.com",
display_name="Ops Archive",
recipient_type=msg.RECIPIENT_TYPE_BCC,
)
message.add_attachment("notes.txt", b"Meeting notes content\n", mime_type="text/plain")
message.add_attachment("data.bin", b"\x00\x01\x02\x03", mime_type="application/octet-stream")
message.save("team-update.msg")
Για να εξετάσετε τα συνημμένα σε ένα υπάρχον μήνυμα:
from aspose.email_foss import msg
with msg.MapiMessage.from_file("team-update.msg") as loaded:
for att in loaded.iter_attachments_info():
print(f"name={att.filename} mime={att.mime_type} size={len(att.data)}")
print(f" embedded={att.is_embedded_message} storage={att.storage_name}")
Μετατροπή MSG σε EmailMessage
Η βιβλιοθήκη μετατρέπει και στις δύο κατευθύνσεις μεταξύ MSG και του Python’s email.message.EmailMessage. Χρησιμοποιήστε to_email_message() να δημιουργήσετε ένα αντικείμενο MIME συμμορφωμένο με τα πρότυπα, ή from_email_message() να εισάγετε ένα υπάρχον EmailMessage στο format MSG. Μεθόδοι ευκολίας to_email_bytes() και to_email_string() σειριοποιεί απευθείας σε bytes ή κείμενο.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("example.msg") as loaded:
email_msg = loaded.to_email_message()
print(f"content_type: {email_msg.get_content_type()}")
print(f"is_multipart: {email_msg.is_multipart()}")
print(f"headers: {len(email_msg)}")
for key, value in email_msg.items():
print(f" {key}: {value}")
body_part = email_msg.get_body(preferencelist=("plain", "html"))
if body_part is not None:
print(f"body: {body_part.get_content()[:200]}")
Κυκλική Μετατροπή CFB Container
Δημιουργεί και σειριοποιεί δοχεία Compound File Binary ανεξάρτητα από το επίπεδο MSG. CFBDocument.from_file() φορτώνει ένα υπάρχον container σε ένα μεταβλητό μοντέλο εγγράφου με CFBStorage και CFBStream κόμβους. CFBWriter.write_file() σειριοποιεί το έγγραφο πίσω στο δίσκο με ντετερμινιστικό τρόπο.
from aspose.email_foss.cfb import CFBDocument, CFBReader, CFBWriter
reader = CFBReader.from_file("container.cfb")
document = CFBDocument.from_reader(reader)
reader.close()
output = CFBWriter.to_bytes(document)
print(f"Serialized {len(output)} bytes")
Διαχείριση Σφαλμάτων
Η βιβλιοθήκη εγείρει CFBError για κακοδιατυπωμένο περιεχόμενο CFB και MsgError για μη έγκυρη δομή MSG. MapiMessage επίσης εκθέτει ένα validation_issues ιδιότητα που επιστρέφει ένα tuple από συμβολοσειρές προειδοποίησης χωρίς να προκαλεί εξαίρεση, επιτρέποντάς σας να αποφασίσετε πόσο αυστηρά να διαχειριστείτε αρχεία που δεν συμμορφώνονται.
from aspose.email_foss.cfb import CFBReader, CFBError
from aspose.email_foss.msg import MsgReader, MsgError
try:
reader = CFBReader.from_file("corrupted.cfb")
except CFBError as e:
print(f"CFB parse error: {e}")
try:
reader = MsgReader.from_file("malformed.msg")
except MsgError as e:
print(f"MSG parse error: {e}")
Γρήγορη Εκκίνηση
pip install aspose-email-foss>=26.3
Φορτώστε ένα υπάρχον MSG, διαβάστε τα μεταδεδομένα του και απαριθμήστε τα συνημμένα:
from aspose.email_foss import msg
with msg.MapiMessage.from_file("inbox-message.msg") as message:
print(f"Subject: {message.subject}")
print(f"Body preview: {message.body[:200] if message.body else '(empty)'}")
for att in message.iter_attachments_info():
print(f"Attachment: {att.filename} ({att.mime_type}, {len(att.data)} bytes)")
issues = message.validation_issues
if issues:
print(f"Warnings: {issues}")
Υποστηριζόμενες Μορφές
| Μορφή | Εισαγωγή | Εξαγωγή |
|---|---|---|
| MSG | Ναι | Ναι |
| CFB | Ναι | Ναι |
Ανοιχτός Κώδικας & Άδεια
Aspose.Email FOSS for Python is released under the MIT License. Μπορείτε να το χρησιμοποιήσετε σε προσωπικά, εσωτερικά και εμπορικά έργα χωρίς περιορισμούς. Ο πηγαίος κώδικας είναι διαθέσιμος στο GitHub.