परिचय

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

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 कंटेनरों को बनाएं और क्रमबद्ध (सीरियलाइज़) करें।. CFBDocument.from_file() एक मौजूदा कंटेनर को एक परिवर्तनीय दस्तावेज़ मॉडल में लोड करता है, जिसमें 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 property जो warning strings का tuple लौटाती है बिना exception उठाए, जिससे आप यह तय कर सकें कि non-conformant files को कितनी कड़ाई से संभालना है।.

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.


शुरूआत