الميزات والوظائف
الميزات والوظائف
تغطي هذه الصفحة كل ميزة رئيسية لـ aspose-email-foss 26.3 مع أمثلة Python عاملة.
قراءة ملفات MSG
حمّل ملف MSG واطّلع على خصائصه الأساسية:
from aspose.email_foss.msg import MapiMessage
msg = MapiMessage.from_file("message.msg")
print(f"Subject: {msg.subject}")
print(f"Body: {msg.body}")
print(f"HTML Body: {msg.body_html}")
print(f"Message Class: {msg.message_class}")إنشاء ملفات MSG
أنشئ رسالة جديدة من الصفر:
from aspose.email_foss.msg import MapiMessage
msg = MapiMessage.create("Meeting Notes", "Please find the notes attached.")
msg.save("new_message.msg")عيّن الموضوع والنص في رسالة موجودة:
msg.subject = "Updated Subject"
msg.body = "Updated body text"
msg.save("updated.msg")المستلمون
أضف المستلمين مع أسماء العرض والأنواع:
from aspose.email_foss.msg import MapiMessage, RECIPIENT_TYPE_CC
msg = MapiMessage.create("Hello", "Message body")
msg.add_recipient("alice@example.com", display_name="Alice Smith")
msg.add_recipient("bob@example.com", display_name="Bob Jones", recipient_type=RECIPIENT_TYPE_CC)
msg.save("with_recipients.msg")المرفقات
أضف مرفقات ملفات ثنائية:
with open("report.pdf", "rb") as f:
data = f.read()
msg.add_attachment("report.pdf", data, mime_type="application/pdf")
msg.save("with_attachment.msg")ضمّ رسالة MSG كمرفق متداخل:
inner = MapiMessage.create("Inner Subject", "Inner body")
msg.add_embedded_message_attachment(inner, filename="embedded.msg", mime_type="application/vnd.ms-outlook")
msg.save("with_embedded.msg")خصائص MAPI
قراءة وكتابة خصائص MAPI حسب معرف الخاصية:
from aspose.email_foss.msg import PropertyId
# Read a property
subject = msg.get_property(PropertyId.SUBJECT)
# Set a property
msg.set_property(PropertyId.SUBJECT, "New Subject")تكرار جميع الخصائص:
for prop in msg.iter_properties():
print(f"Tag: {prop.property_tag:#010x}")تحويل البريد الإلكتروني
تحويل بين صيغ MSG (MAPI) والبريد الإلكتروني (RFC 5322):
# MSG to email string
email_str = msg.to_email_string()
print(email_str[:500])
# MSG to EmailMessage object
email_msg = msg.to_email_message()
# EmailMessage back to MapiMessage
msg2 = MapiMessage.from_email_message(email_msg)
msg2.save("roundtrip.msg")عمليات CFB منخفضة المستوى
قراءة بنية حاوية CFB مباشرةً:
from aspose.email_foss.cfb import CFBReader
reader = CFBReader.from_file("message.msg")
print(f"File size: {reader.file_size} bytes")
print(f"Sectors: {reader.fat_sector_count}")
print(f"Entries: {reader.directory_entry_count}")
for entry in reader.iter_storages():
print(f"Storage: {entry}")
for entry in reader.iter_streams():
print(f"Stream: {entry}")
reader.close()كتابة مستندات CFB:
from aspose.email_foss.msg import MsgWriter
data = msg.to_bytes()
with open("output.msg", "wb") as f:
f.write(data)نصائح وأفضل الممارسات
- دائمًا استدعِ
msg.close()أو استخدم مدير السياق عند الانتهاء من القراءة لإطلاق مقابض الملفات - استخدم
msg.validation_issuesللتحقق من مشكلات توافق تنسيق MSG - ال
strictالمعامل فيMapiMessage.from_file()يتحكم في تحمل الأخطاء — اضبط إلىFalseلتحليل متساهل - يتم تحميل جميع بيانات المرفقات إلى الذاكرة أثناء
from_file()— استخدمatt.dataللوصول إلى البايتات مباشرة؛;iter_attachments_info()هو مكرّر مريح على قائمة المرفقات المملوءة مسبقًا - استخدم
to_email_string()للمعاينات النصية السريعة دون إنشاء كائن البريد الإلكتروني بالكامل
المشكلات الشائعة
| مشكلة | سبب | إصلاح |
|---|---|---|
CFBError أثناء التحميل | ملف CFB/MSG غير صالح | تحقق من أن الملف هو MSG فعلي من Outlook |
| المحتوى فارغ بعد التحميل | المحتوى مخزن بصيغة HTML فقط | تحقق msg.body_html بدلاً من msg.body |
| المستلمون مفقودون | ملف MSG لا يحتوي على تخزين للمستلمين | المستلمون اختياريون في تنسيق MSG؛ تحقق iter_attachments_info() |
FAQ
ما إصدارات صيغة MSG المدعومة؟?
المكتبة تقرأ وتكتب ملفات MSG بصيغة CFB v3 و v4، متوافقة مع Microsoft Outlook.
هل يمكنني قراءة ملفات EML؟?
ليس مباشرةً. المكتبة تتعامل مع تنسيق MSG. استخدم MapiMessage.from_email_message() لتحويل من RFC 5322 EmailMessage الكائنات.
هل يتم دعم أمان الخيوط (thread-safety)؟?
كل MapiMessage و CFBReader الـinstance مستقل. الوصول المتزامن إلى الـinstances المنفصلة من الـthreads المنفصلة آمن.
ملخص مرجع API
| الفئة / الطريقة | الوصف |
|---|---|
MapiMessage | تمثيل رسالة MSG عالي المستوى |
MapiMessage.from_file() | تحميل ملف MSG |
MapiMessage.create() | إنشاء رسالة MSG جديدة |
MapiMessage.save() | حفظ إلى ملف MSG |
MapiMessage.to_email_message() | تحويل إلى EmailMessage (RFC 5322) |
MapiMessage.from_email_message() | تحويل من EmailMessage إلى MSG |
MapiMessage.add_recipient() | إضافة مستلم |
MapiMessage.add_attachment() | إضافة مرفق ثنائي |
MapiAttachment | مرفق على رسالة |
MapiRecipient | مستلم على رسالة |
MapiProperty | إدخال خاصية MAPI |
CFBReader | قارئ حاوية CFB منخفض المستوى |
CFBWriter | كاتب حاوية CFB منخفض المستوى |
MsgReader | قارئ بنية MSG منخفض المستوى |