ویژگی‌ها و عملکردها

ویژگی‌ها و عملکردها

این صفحه تمام ویژگی‌های اصلی را پوشش می‌دهد 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() یا از یک context manager استفاده کنید وقتی خواندن تمام شد تا دستگیره‌های فایل آزاد شوند
  • استفاده کنید 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 نسخه 3 و 4 می‌خواند و می‌نویسد و با Microsoft Outlook سازگار است.

آیا می‌توانم فایل‌های EML را بخوانم؟?

به‌صورت مستقیم نیست. کتابخانه فرمت MSG را مدیریت می‌کند. استفاده کنید MapiMessage.from_email_message() برای تبدیل از RFC 5322 EmailMessage اشیاء.

آیا ایمنی در برابر چندنخی (thread-safety) پشتیبانی می‌شود؟?

هر MapiMessage و CFBReader نمونه مستقل است. دسترسی همزمان به نمونه‌های جداگانه از رشته‌های جداگانه ایمن است.


خلاصه مرجع 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
 فارسی