परिचय

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 दस्तावेज़ों पर निर्धारक नियंत्रण प्रदान करते हैं। आप स्टोरेज पदानुक्रमों को पार कर सकते हैं, कच्चा स्ट्रीम डेटा निकाल सकते हैं, शून्य से नए कंटेनर बना सकते हैं, और उन्हें बाइट्स में फिर से सीरियलाइज़ कर सकते हैं। दोनों 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() कच्चे बाइट्स और 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 MSG फ़ॉर्मेट में। सुविधा विधियाँ to_email_bytes() और to_email_string() सीधे बाइट्स या टेक्स्ट में serialize करता है।.

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 कंटेनर राउंड‑ट्रिप

MSG लेयर से स्वतंत्र रूप से Compound File Binary कंटेनरों को बनाएं और serialize करें।. CFBDocument.from_file() एक मौजूदा कंटेनर को mutable दस्तावेज़ मॉडल में लोड करता है, जिसमें CFBStorage और CFBStream नोड्स।. CFBWriter.write_file() दस्तावेज़ को निर्धारित तरीके से डिस्क पर वापस serialize करता है।.

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 प्रॉपर्टी जो चेतावनी स्ट्रिंग्स का ट्यूपल लौटाती है बिना अपवाद उठाए, जिससे आप तय कर सकें कि गैर-अनुरूप फ़ाइलों को कितनी कड़ाई से संभालना है।.

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. आप इसे व्यक्तिगत, आंतरिक और व्यावसायिक प्रोजेक्ट्स में बिना किसी प्रतिबंध के उपयोग कर सकते हैं। स्रोत कोड उपलब्ध है on GitHub.


शुरू करना