Εισαγωγή

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-foss
from 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.


Ξεκινώντας