مقدمة

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-foss
from 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.


بدءاً من

الموارد ذات الصلة