Python में MSG फ़ाइलों को कैसे पार्स करें

Python में MSG फ़ाइलों को कैसे पार्स करें

aspose-email-foss for Python शुद्ध-Python API प्रदान करता है जो Microsoft Office निर्भरताओं के बिना Outlook MSG फ़ाइलों को पढ़ता है। सभी संदेश डेटा तक पहुँचने के लिए फ़ाइल को MapiMessage ऑब्जेक्ट में लोड करें।

चरण-दर-चरण गाइड

चरण 1: पैकेज स्थापित करें

pip install aspose-email-foss

Python 3.10 या बाद के संस्करण की आवश्यकता है।


चरण 2: MapiMessage क्लास आयात करें

from aspose.email_foss.msg import MapiMessage

चरण 3: MSG फ़ाइल लोड करें

msg = MapiMessage.from_file("message.msg")

विकृत फ़ाइलों के लचीले पार्सिंग के लिए, strict=False पास करें:

msg = MapiMessage.from_file("message.msg", strict=False)

चरण 4: संदेश गुणों तक पहुँचें

print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html[:200] if msg.body_html else 'None'}")
print(f"Message Class: {msg.message_class}")

चरण 5: संलग्नक सूचीबद्ध करें

for att in msg.iter_attachments_info():
    name = att.storage_name
    is_embedded = att.is_embedded_message
    print(f"Attachment: {name}, embedded={is_embedded}")

चरण 6: लो‑लेवल CFB संरचना का निरीक्षण करें

from aspose.email_foss.cfb import CFBReader

reader = CFBReader.from_file("message.msg")
print(f"Directory entries: {reader.directory_entry_count}")
for entry in reader.iter_streams():
    print(f"  Stream: {entry}")
reader.close()

सामान्य समस्याएँ और समाधान

CFBError लोड करते समय

फ़ाइल एक वैध CFB कंटेनर नहीं है। सुनिश्चित करें कि यह वास्तविक Outlook MSG फ़ाइल है, न कि EML।

बॉडी खाली है लेकिन HTML बॉडी में सामग्री है

कुछ संदेश केवल HTML में सामग्री संग्रहीत करते हैं। जब msg.body None लौटाता है, तो msg.body_html जांचें।

सत्यापन चेतावनियाँ

लोड की गई फ़ाइल के लिए अनुपालन चेतावनियों का ट्यूपल देखने हेतु msg.validation_issues तक पहुँचें।


अक्सर पूछे जाने वाले प्रश्न (FAQ)

क्या मैं EML फ़ाइलें पढ़ सकता हूँ?

सीधे नहीं। लाइब्रेरी MSG (CFB) फ़ॉर्मेट को संभालती है। पहले EML सामग्री को एक EmailMessage ऑब्जेक्ट में बदलें, फिर MapiMessage.from_email_message() का उपयोग करें।

क्या लोडिंग सभी अटैचमेंट डेटा को मेमोरी में पढ़ती है?

नहीं। संलग्नक मेटाडेटा मांग पर पढ़ा जाता है। हल्के इटरशन के लिए iter_attachments_info() का उपयोग करें।

क्या यह थ्रेड-सेफ है?

प्रत्येक MapiMessage इंस्टेंस स्वतंत्र है। अलग-अलग इंस्टेंस से समवर्ती पढ़ना सुरक्षित है।

 हिन्दी