كيفية تحليل ملفات MSG في بايثون
توفر aspose-email-foss للغة Python واجهة برمجة تطبيقات pure-Python لقراءة ملفات Outlook MSG دون الاعتماد على Microsoft Office. قم بتحميل ملف إلى كائن 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_html عندما msg.body يُعيد None.
تحذيرات التحقق
الوصول إلى msg.validation_issues لرؤية مجموعة من تحذيرات الامتثال للملف المحمَّل.
الأسئلة المتكررة (FAQ)
هل يمكنني قراءة ملفات EML؟
ليس مباشرة. المكتبة تتعامل مع تنسيق MSG (CFB). حوّل محتوى EML إلى كائن EmailMessage أولاً، ثم استخدم MapiMessage.from_email_message().
هل يقرأ التحميل جميع بيانات المرفق في الذاكرة؟
لا. يتم قراءة بيانات تعريف المرفق عند الطلب. استخدم iter_attachments_info() للتكرار الخفيف.
هل هو آمن من تعدد الخيوط؟
كل مثيل MapiMessage مستقل. القراءات المتزامنة من مثيلات منفصلة آمنة.