परिचय

ईमेल संदेशों को प्रोग्रामेटिकली पार्स करना डेटा माइग्रेशन, आर्काइवल वर्कफ़्लोज़ और कंप्लायंस टूल्स के लिए एक सामान्य आवश्यकता है। Outlook MSG फ़ाइलें कंपाउंड फ़ाइल बाइनरी (CFB) कंटेनर फ़ॉर्मेट और MAPI प्रॉपर्टीज़ का उपयोग करके संदेश मेटाडेटा, बॉडी कंटेंट, प्राप्तकर्ता और अटैचमेंट्स को एन्कोड करती हैं। Python में इस फ़ॉर्मेट के साथ काम करना पारंपरिक रूप से या तो कमर्शियल लाइब्रेरीज़ या लो-लेवल बाइनरी मैनिपुलेशन की आवश्यकता रखता था।

aspose-email-foss पैकेज एक शुद्ध-Python, MIT-लाइसेंस वाली लाइब्रेरी प्रदान करता है जो Outlook MSG फ़ाइलों को पढ़ने, बनाने और परिवर्तित करने के लिए है। यह सामान्य कार्यों के लिए एक उच्च-स्तरीय MapiMessage API के साथ-साथ नीचे-स्तर के MsgReader एक्सेस को उजागर करता है, जो अंतर्निहित CFB संरचना की विस्तृत जाँच के लिए है। लाइब्रेरी को Python 3.10 या उससे बाद का संस्करण चाहिए और इसमें कोई नेटिव डिपेंडेंसी नहीं है।

चाहे आपको आर्काइव्ड संदेशों के एक बैच से सब्जेक्ट लाइन और बॉडी निकालनी हो, इंडेक्सिंग के लिए अटैचमेंट्स की सूची बनानी हो, या MSG फ़ाइलों को मानक RFC 5322 फ़ॉर्मेट में बदलना हो, यह लाइब्रेरी बाइनरी पार्सिंग को संभालती है जिससे आप अपने एप्लिकेशन लॉजिक पर ध्यान केंद्रित कर सकते हैं।


क्या शामिल है

MapiMessage के साथ MSG फ़ाइलें पढ़ना

MapiMessage क्लास Outlook MSG फ़ाइलों को पार्स करने के लिए मुख्य एंट्री पॉइंट है। एक फ़ाइल खोलें, उसकी प्रॉपर्टीज़ तक पहुँचें, और एक कॉन्टेक्स्ट मैनेजर के साथ इसे साफ़ तौर पर बंद करें।

from aspose.email_foss import msg

with msg.MapiMessage.from_file("meeting-invite.msg") as message:
    print(f"Subject: {message.subject}")
    print(f"Body: {message.body[:200]}")
    print(f"HTML body available: {message.body_html is not None}")

from_file विधि CFB कंटेनर को पढ़ती है, MAPI प्रॉपर्टी स्ट्रीम्स को पार्स करती है, और टाइप्ड एट्रिब्यूट्स को भरती है। subject, body, और body_html प्रॉपर्टीज़ सीधे डिकोडेड स्ट्रिंग्स लौटाती हैं।

प्राप्तकर्ताओं को निकालना

प्रत्येक MSG फ़ाइल द्वारा प्राप्तकर्ता जानकारी को समर्पित MAPI स्टोरेज में संग्रहीत किया जाता है। MapiMessage.recipients प्रॉपर्टी MapiRecipient ऑब्जेक्ट्स की सूची लौटाती है, जिनमें डिस्प्ले नाम, ईमेल पता, और प्राप्तकर्ता प्रकार (TO, CC, या BCC) के लिए टाइप्ड फ़ील्ड होते हैं।

from aspose.email_foss import msg

with msg.MapiMessage.from_file("team-update.msg") as message:
    for recipient in message.recipients:
        print(
            f"{recipient.display_name} <{recipient.email_address}> "
            f"type={recipient.recipient_type}"
        )

संलग्नकों के साथ काम करना

iter_attachments_info विधि MapiAttachment ऑब्जेक्ट्स देती है जो फ़ाइलनाम, कच्चे बाइट्स, MIME टाइप, और इनलाइन इमेजेज़ के लिए वैकल्पिक Content-ID प्रदान करती हैं।

from aspose.email_foss import msg

with msg.MapiMessage.from_file("report.msg") as message:
    for att in message.iter_attachments_info():
        print(f"  {att.filename} ({att.mime_type}, {len(att.data)} bytes)")
        if att.content_id:
            print(f"    inline content-id: {att.content_id}")

MAPI प्रॉपर्टीज़ तक पहुँच

ऐसे परिदृश्यों के लिए जहाँ सुविधाजनक एट्रिब्यूट्स से परे विशिष्ट MAPI प्रॉपर्टी मानों की आवश्यकता होती है, get_property_value को PropertyId कॉन्स्टेंट के साथ उपयोग करें। यह MSG फ़ाइल में संग्रहीत किसी भी प्रॉपर्टी तक सीधे पहुँच प्रदान करता है।

from aspose.email_foss import msg

with msg.MapiMessage.from_file("notification.msg") as message:
    sender = message.get_property_value(msg.PropertyId.SENDER_NAME)
    email = message.get_property_value(msg.PropertyId.SENDER_EMAIL_ADDRESS)
    delivery = message.get_property_value(msg.PropertyId.MESSAGE_DELIVERY_TIME)
    print(f"From: {sender} <{email}>")
    print(f"Delivered: {delivery}")

सभी प्रॉपर्टीज़ पर इटरेट करना

जब आपको किसी संदेश की हर प्रॉपर्टी का निरीक्षण करना हो (डिबगिंग, ऑडिटिंग, या माइग्रेशन के लिए), iter_properties मेथड MapiProperty ऑब्जेक्ट्स प्रदान करता है जिनमें पूर्ण टैग और वैल्यू जानकारी होती है।

from aspose.email_foss import msg

with msg.MapiMessage.from_file("sample.msg") as message:
    for prop in message.iter_properties():
        print(
            f"tag=0x{prop.property_tag:08X} "
            f"type=0x{prop.property_type:04X} "
            f"value={prop.value!r}"
        )

MSG को EML में परिवर्तित करना

to_email_message मेथड एक पार्स किए गए MSG को एक मानक Python email.message.EmailMessage ऑब्जेक्ट में परिवर्तित करता है। इसके बाद आप मानक लाइब्रेरी का उपयोग करके संदेश को RFC 5322 (EML) फ़ॉर्मेट में सीरियलाइज़ कर सकते हैं।

from aspose.email_foss import msg

with msg.MapiMessage.from_file("archive.msg") as message:
    email_message = message.to_email_message()
    eml_bytes = email_message.as_bytes()
    with open("archive.eml", "wb") as f:
        f.write(eml_bytes)

ध्यान दें कि EML आउटपुट Python के बिल्ट-इन email मॉड्यूल का उपयोग सीरियलाइज़ेशन के लिए करता है। लाइब्रेरी MSG-to-MAPI-to-EmailMessage रूपांतरण को संभालती है; मानक लाइब्रेरी RFC 5322 वायर फ़ॉर्मेट को संभालती है।


त्वरित शुरुआत

पैकेज को PyPI से इंस्टॉल करें और 20 लाइनों से कम में अपनी पहली MSG फ़ाइल को पार्स करें:

# Install: pip install aspose-email-foss>=26.3
from aspose.email_foss import msg

# Create a new message
message = msg.MapiMessage.create(
    "Project status update",
    "Hello team,\n\nPlease review the attached report.\n\nRegards",
)
message.add_recipient("alice@example.com", display_name="Alice")
message.add_attachment("notes.txt", b"meeting notes\n", mime_type="text/plain")
message.save("status-update.msg")

# Read it back and extract data
with msg.MapiMessage.from_file("status-update.msg") as loaded:
    print(f"Subject: {loaded.subject}")
    print(f"Recipients: {len(loaded.recipients)}")
    for att in loaded.iter_attachments_info():
        print(f"Attachment: {att.filename} ({len(att.data)} bytes)")

समर्थित फ़ॉर्मैट्स

फ़ॉर्मेटएक्सटेंशनपढ़ेंलिखें
Outlook MSG.msgहाँहाँ
Compound File Binary.cfbहाँहाँ
EML (परिवर्तन के माध्यम से).emlहाँ (के माध्यम से from_email_message)हाँ (के माध्यम से to_email_message)

EML समर्थन रूपांतरण के माध्यम से काम करता है: MapiMessage.from_email_message() एक Python email.message.EmailMessage ऑब्जेक्ट से इम्पोर्ट करता है, और to_email_message() वापस एक्सपोर्ट करता है। सीधे EML फ़ाइल पार्सिंग उपलब्ध नहीं है — मानक लाइब्रेरी EML वायर फ़ॉर्मेट को संभालती है।


ओपन सोर्स एवं लाइसेंसिंग

Aspose.Email FOSS for Python MIT लाइसेंस के तहत जारी किया गया है। आप लाइब्रेरी को व्यावसायिक और गैर-व्यावसायिक दोनों प्रोजेक्ट्स में उपयोग, संशोधित और वितरित करने के लिए स्वतंत्र हैं। पूर्ण स्रोत कोड GitHub पर उपलब्ध है।

यह लाइब्रेरी एक शुद्ध-Python कार्यान्वयन है जिसमें कोई संकलित एक्सटेंशन या मूल निर्भरताएँ नहीं हैं। यह किसी भी प्लेटफ़ॉर्म पर चलती है जो Python 3.10 या बाद के संस्करण का समर्थन करता है।


शुरूआत

Aspose.Email FOSS के साथ Python के लिए काम करने हेतु अधिक संसाधनों का अन्वेषण करें:

  • Developer Guide — ट्यूटोरियल्स और API वॉकथ्रू सहित पूर्ण दस्तावेज़ीकरण
  • Knowledge Base — कैसे-करें लेख और अक्सर पूछे जाने वाले प्रश्न
  • API Reference — पूर्ण क्लास और मेथड संदर्भ

संबंधित संसाधन