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