مقدمة

Aspose.Email FOSS for Python is a free, MIT-licensed library for creating, reading, and تحويل ملفات الرسائل متوافقة مع Outlook إلى Python النقي. aspose-email-foss,يعمل على ويندوز، ماكوس، لينكس، دوكر، وبيئات خالية من الخادم. لا تعتمد على Microsoft Office ولا توجد ساعات عمل مملوكة.

يغطي المكتبة اثنين من المناطق الرئيسية: طبقة عالية المستوى 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 الملف دون تحميل كامل في A 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/رسالة البريد الإلكتروني و من يتم نشر هذا المقال على موقع PyPI كما aspose-email-foss.الاستخدام التجاري، والتعديل، و يتم إعادة توزيعها جميعًا بموجب شروط MIT.


بدءاً من