ویژگیها و عملکردها
ویژگیها و عملکردها
این صفحه تمام ویژگیهای اصلی را پوشش میدهد 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 |