Python में MSG फ़ाइलों को कैसे पार्स करें
aspose-email-foss for Python शुद्ध-Python API प्रदान करता है जो Microsoft Office निर्भरताओं के बिना Outlook MSG फ़ाइलों को पढ़ता है। सभी संदेश डेटा तक पहुँचने के लिए फ़ाइल को MapiMessage ऑब्जेक्ट में लोड करें।
चरण-दर-चरण गाइड
चरण 1: पैकेज स्थापित करें
pip install aspose-email-fossPython 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 इंस्टेंस स्वतंत्र है। अलग-अलग इंस्टेंस से समवर्ती पढ़ना सुरक्षित है।