مقدمة
Aspose.Email FOSS for Python is a free, MIT-licensed library for creating, reading, and تحويل ملفات الرسائل المتوافقة مع Outlook في Python النقي. متوفر على PyPI كـ: aspose-email-foss,، يعمل على Windows و macOS و Linux و Docker، و بيئات بدون خادم. بدون اعتماد على مايكروسوفت اوفيس وبدون وقت تشغيل خاص.
تغطي المكتبة مجالين رئيسيين: طبقة MAPI عالية المستوى (MapiMessage) للعمل مع مواضيع الرسائل، والجسم، والمستلمين، ومرفقات؛ ومتدنية المستوى الهيكلية الطبقة (MsgReader, CFBReader, CFBStorage, CFBStream) الذي يعرض المركب الخام حاويات الملف الثنائي التي تقوم على كل .msg الملف.
يمر هذا المقال من خلال الميزات الرئيسية التي تم إرسالها في الإصدار 26.3 ، والتي تقع على سطح API المؤكد.
الميزات الرئيسية
إنشاء رسالة عالية المستوى مع MapiMessage
MapiMessage هي نقطة الدخول الأساسية لإنشاء رسائل متوافقة مع Outlook من إتصلي بي MapiMessage.create() مع موضوع وجسم، إضافة المستلمين و المرفقات، ثم حفظ مباشرة إلى .msg الملف.
from aspose.email_foss import msg
message = msg.MapiMessage.create(
"Quarterly status update",
"Hello team,\n\nPlease review the attached summary.\n\nRegards,\nEngineering",
)
message.set_property(msg.PropertyId.SENDER_NAME, "Build Agent")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "agent@example.com")
message.add_recipient("alice@example.com", display_name="Alice Example")
message.add_recipient(
"carol@example.com",
display_name="Carol Example",
recipient_type=msg.RECIPIENT_TYPE_CC,
)
message.add_attachment("report.txt", b"Summary content here.\n", mime_type="text/plain")
message.save("output.msg")
قراءة ومراجعة ملفات MSG
MsgReader يوفر إمكانية الوصول المنظم إلى نظام موجود .msg ملف بدون تحميله بالكامل إلى MapiMessage. إنه يكشف عن إدخالات الممتلكات العليا، ومخازن المستلمين، و التخزين المرفق بشكل فردي، مما يجعله عمليًا للتفتيش الكبير والتحليل. خط أنابيب التحقق من صحة.
from aspose.email_foss import msg
with msg.MsgReader.from_file("output.msg") as reader:
header = reader.top_level_header
print(f"Recipients : {header.recipient_count}")
print(f"Attachments: {header.attachment_count}")
for entry in reader.iter_recipient_storages():
_, props = reader.parse_subobject_property_stream(entry.stream_id)
print(f" Recipient storage {entry.name}: {len(props)} property entries")
MSG Round-Trip: تحميل، تعديل، حفظ
لأنّه … MapiMessage الدعامات from_file() للتحميل و save() للكتابة، كامل دورة قراءة تعديل كتابة تتطلب فقط بضعة خطوط. خصائص مسمّية، إينومات مكتوبة، و التعامل مع سلسلة يونيكود متاح من خلال set_property, PropertyId,، و MapiNamedProperty.
from aspose.email_foss import msg
with msg.MapiMessage.from_file("original.msg") as message:
message.set_property(msg.PropertyId.SUBJECT, "Updated Subject")
message.save("updated.msg")
EML / RFC 5322 التحويل
MapiMessage.to_email_message() يحول MSG المحمول إلى Python قياسي email.message.EmailMessage كائن، تمكين التصدير إلى RFC 5322 .eml تشكيل باستخدام المكتبة القياسية. الاتجاه المعاكس (MapiMessage.from_email_message()) يُنشئ أ . MapiMessage من EmailMessage.
from pathlib import Path
from aspose.email_foss import msg
with msg.MapiMessage.from_file("message.msg") as message:
eml_bytes = message.to_email_bytes()
Path("message.eml").write_bytes(eml_bytes)
# Reverse: load EML into MapiMessage
import email
raw_eml = Path("message.eml").read_bytes()
email_obj = email.message_from_bytes(raw_eml)
mapi = msg.MapiMessage.from_email_message(email_obj)
mapi.save("from_eml.msg")
CFB حاوية السفر
كلّ واحد. .msg الملف هو حاوية ملف مركب ثنائي (CFB). CFBReader يقدم الوصول القراءة فقط إلى شجرة الدليل، مما يسمح لك قائمة المخازن والتيارات ، المشي في التسلسل الهرمي ، واستخراج البايتات الجريان الخام دون الاعتماد على MsgReader.
from aspose.email_foss.cfb import CFBReader
with CFBReader.from_file("message.msg") as reader:
print(f"CFB version : {reader.major_version}")
print(f"Sector size : {reader.sector_size}")
for depth, entry in reader.iter_tree():
indent = " " * depth
size = entry.stream_size if entry.is_stream() else "-"
print(f"{indent}{entry.name} [size={size}]")
التعامل مع الالتزام
يتم إضافة الملحقات عبر: MapiMessage.add_attachment() (للمعلومات الثنائية) أو MapiMessage.add_embedded_message_attachment() (للمراسلات المرتبطة بالـ MSG) ، كلاهما. تقبل اسم الملف، و بايتات خام، ونوع MIME الاختياري.
from aspose.email_foss import msg
message = msg.MapiMessage.create("Attachment demo", "See files below.")
message.add_attachment("data.csv", b"id,value\n1,100\n", mime_type="text/csv")
inner = msg.MapiMessage.create("Nested message", "This is embedded.")
message.add_embedded_message_attachment(inner, "nested.msg")
message.save("with_attachments.msg")
بدء سريع
pip install aspose-email-fossfrom aspose.email_foss import msg
# Create and save a minimal MSG
message = msg.MapiMessage.create("Hello World", "This is a test message.")
message.set_property(msg.PropertyId.SENDER_EMAIL_ADDRESS, "sender@example.com")
message.add_recipient("recipient@example.com", display_name="Recipient")
message.save("hello.msg")
# Load it back and convert to EML
with msg.MapiMessage.from_file("hello.msg") as loaded:
print(loaded.get_property_value(msg.PropertyId.SUBJECT))
eml = loaded.to_email_bytes()
open("hello.eml", "wb").write(eml)
تنسيقات مدعومة
| شكل | تمديد | اقرأ | اكتب |
|---|---|---|---|
| ملف ثنائي مركب | .cfb | ✓ | ✓ |
| رسالة Outlook | .msg | ✓ | ✓ |
| EML / RFC 5322 | .eml | ✓ | ✓ |
المصدر المفتوح و الترخيص
Aspose.Email FOSS for Python is released under the MIT License. The source repository is متاح في: github.com/aspose-email-foss (موقع التطبيقات الإلكترونية) و المادة الثانية: يتم نشر الحزمة على PyPI كـ: aspose-email-foss. الاستخدام التجاري، والتعديل، و إعادة التوزيع جميعها مسموح بها بموجب شروط MIT.