Εισαγωγή
Aspose.Email FOSS for Python is a free, MIT-licensed library for creating, reading, and Μετατροπή αρχείων μηνυμάτων που είναι συμβατά με το Outlook σε καθαρό Python. διαθέσιμο στο PyPI ως aspose-email-foss, λειτουργεί στα Windows, macOS, Linux, Docker και μη διακομιστικά περιβάλλοντα χωρίς εξάρτηση από το Microsoft Office και χωρίς δικό του χρόνο λειτουργίας.
Η βιβλιοθήκη καλύπτει δύο κύριες περιοχές: ένα υψηλό επίπεδο MAPI στρώμα (MapiMessageΓια να εργαστείτε με τα θέματα, τους οργανισμούς, τον παραλήπτη και τις συνημμένες ενώσεις· και μια δομή χαμηλού επιπέδου Η ΣΕΦΑΛΙΑ (MsgReader, CFBReader, CFBStorage, CFBStreamπου εκθέτει το πρώιμο συστατικό Τα αρχεία δυαδικών δοχείων που υπονομεύουν κάθε .msg αρχείο .
Αυτό το άρθρο περνά μέσα από τα βασικά χαρακτηριστικά που αποστέλλονται στην έκδοση 26.3, βάσει της επιφάνειας του API.
Βασικά Χαρακτηριστικά
Δημιουργία μηνυμάτων υψηλού επιπέδου με MapiMessage
MapiMessage είναι το κύριο σημείο εισόδου για τη δημιουργία μηνυμάτων που είναι συμβατά με το Outlook από ΚΛΕΦΤΙ - Call MapiMessage.create() με ένα θέμα και σώμα, προσθέστε τους παραλήπτες και Ακολουθεί η συλλογή, και στη συνέχεια αποθηκεύεται απευθείας σε ένα .msg αρχείο .
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")
Διαβάστε και ελέγξτε τα αρχεία MSG
MsgReader παρέχει διαρθρωμένη πρόσβαση σε υπάρχοντα .msg Το αρχείο χωρίς να το φορτίσετε πλήρως. Μέσα σε A MapiMessage. εκθέτει εισιτήρια ακινήτων υψηλού επιπέδου, αποθήκες παραλήπτη και αποθηκεύονται μεμονωμένα, καθιστώντας πρακτικό για την επιθεώρηση μεγάλων αρχείων και Τυποποίηση των σωλήνων.
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 Round-Trip: Κατεβάστε, τροποποιήστε και αποθηκεύστε
Επειδή MapiMessage Υποστήριξη from_file() Για την φόρτιση και save() Για να γράψει, ένα πλήρες Ο κύκλος ανάγνωσης-αλλαγής-εγγραφής απαιτεί μόνο μερικές γραμμές. ονομαστικές ιδιότητες, τυποποιημένες ενοχές και Η χειραγώγηση των σιδηροδρόμων Unicode είναι διαθέσιμη μέσω set_property, PropertyId,και 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 Μετατροπή
MapiMessage.to_email_message() Μετατρέπεται ένα φορτισμένο MSG σε μια τυποποιημένη Python email.message.EmailMessage Εξαγωγή στο RFC 5322 .eml Χρησιμοποιώντας τη μορφή Η κατεύθυνση της επιστροφής (MapiMessage.from_email_message()• Κατασκευάζει Α MapiMessage Από ένα 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")
CFB Μεταφορά εμπορευματοκιβωτίων
ΟΛΟΙ .msg Το αρχείο είναι ένα δοχείο Compound File Binary (CFB). CFBReader Παρέχει Διαβάστε μόνο την πρόσβαση στο δέντρο διευθύνσεων, σας επιτρέπουν να καταγράψετε αποθήκες και ρεύματα, περπατήστε το ιεραρχία, και εξάγει τα μπατίτα πρώτων ροών — χωρίς να βασίζεται σε 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}]")
ΕΝΟΔΙΚΗ ΔΙΑΧΕΙΡΙΣΗΣ
Οι προσθήκες προστίθενται μέσω MapiMessage.add_attachment() (για τα δυαδικά δεδομένα) ή MapiMessage.add_embedded_message_attachment() (για τα μηνύματα MSG που δεν έχουν ληφθεί) Και οι δύο μέθοδοι Αποδέχεται ένα όνομα αρχείου, ριζικά byte και έναν προαιρετικό τύπο 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")
Γρήγορη έναρξη
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)
Υποστηριζόμενες μορφές
| ΤΕΧΝΗ | ΕΠΙΤΡΟΦΗ | Διαβάστε | Γράψε |
|---|---|---|---|
| Ετικέτες Binary File | .cfb | ✓ | ✓ |
| Μηνύματα Outlook | .msg | ✓ | ✓ |
| EML / RFC 5322 | .eml | ✓ | ✓ |
Ανοικτή Πηγή & Άδεια Χρήσης
Aspose.Email FOSS for Python is released under the MIT License. The source repository is Διαθέσιμο σε github.com/αποστέλλοντας-email-foss Και το Το πακέτο δημοσιεύεται στο PyPI ως aspose-email-foss.εμπορική χρήση, τροποποίηση και Η αναδιανομή είναι όλες επιτρεπόμενη σύμφωνα με τους όρους του MIT.