بارگذاری و ذخیرهٔ پیام

شناسایی فرمت‌های فایل

API Aspose.Email امکان شناسایی فرمت فایل پیام ارائه‌شده را فراهم می‌کند. متد DetectFileFormat از کلاس FileFormatUtil می‌تواند برای این منظور استفاده شود. کلاس‌ها و متدهای زیر می‌توانند برای شناسایی فرمت فایل بارگذاری‌شده استفاده شوند.

قطعه کد زیر نشان می‌دهد چگونه فرمت‌های فایل را شناسایی کنید.

from aspose.email.tools import FileFormatUtil

# Detect file format and get the detected load format
info = FileFormatUtil.detect_file_format(data_dir + "message.msg")
print("The message format is: " + str(info.file_format_type))

بارگذاری پیام با گزینه‌های بارگذاری

قطعه کد زیر نشان می‌دهد چگونه یک پیام را با گزینه‌های بارگذاری بارگذاری کنید.

from aspose.email import MailMessage, EmlLoadOptions, HtmlLoadOptions, MhtmlLoadOptions, MsgLoadOptions

# Load Eml, html, mhtml, msg, and dat files
mail_message = MailMessage.load(data_dir + "message.eml", EmlLoadOptions())
MailMessage.load(data_dir + "description.html", HtmlLoadOptions())
MailMessage.load(data_dir + "message.mhtml", MhtmlLoadOptions())
MailMessage.load(data_dir + "message.msg", MsgLoadOptions())

# Loading with custom options
eml_load_options = EmlLoadOptions()
eml_load_options.preferred_text_encoding = "utf-8"
eml_load_options.preserve_tnef_attachments = True

MailMessage.load(data_dir + "description.html", eml_load_options)

html_load_options = HtmlLoadOptions()
html_load_options.preferred_text_encoding = "utf-8"
html_load_options.should_add_plain_text_view = True
html_load_options.path_to_resources = data_dir

MailMessage.load(data_dir + "description.html", html_load_options)

حفظ قالب پیام توکار هنگام بارگذاری

from aspose.email import MailMessage, EmlLoadOptions, HtmlLoadOptions, MhtmlLoadOptions, MsgLoadOptions
from aspose.email.tools import FileFormatUtil

eml_load_options = EmlLoadOptions()
eml_load_options.preserve_embedded_message_format = True

mail = MailMessage.load(data_dir + "message.eml", eml_load_options)

file_format = FileFormatUtil.detect_file_format(mail.attachments[0].content_stream).file_format_type

print("Embedded message file format: " + str(file_format))

ذخیره و تبدیل پیام‌ها

Aspose.Email تبدیل هر نوع پیام به قالب دیگری را آسان می‌کند. برای نشان دادن این ویژگی، کد این مقاله سه نوع پیام را از دیسک بارگذاری کرده و دوباره در قالب‌های دیگر ذخیره می‌کند. کلاس پایه SaveOptions و کلاس‌ها EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions برای تنظیمات اضافی هنگام ذخیره‌سازی MailMessage می‌تواند برای ذخیره پیام‌ها به قالب‌های دیگر استفاده شود. مقاله نشان می‌دهد چگونه از این کلاس‌ها برای ذخیره یک ایمیل نمونه به عنوان:

  • قالب EML.
  • Outlook MSG.
  • قالب MHTML.
  • قالب HTML.

بارگذاری EML و ذخیره به عنوان EML

قطعه کد زیر نشان می‌دهد چگونه یک پیام EML را بارگذاری کرده و در همان قالب به دیسک ذخیره کنید.

from aspose.email import MailMessage, SaveOptions

# Initialize and Load an existing EML file by specifying the MessageFormat
mail_message = MailMessage.load(data_dir + "message.eml")

mail_message.save(data_dir + "LoadAndSaveFileAsEML_out.eml", SaveOptions.default_eml)

بارگذاری EML و ذخیره به عنوان EML با حفظ مرزهای اصلی

قطعه کد زیر نشان می‌دهد چگونه EML را بارگذاری کرده و به عنوان EML ذخیره کنید در حالی که مرزهای اصلی حفظ می‌شوند.

from aspose.email import MailMessage, EmlSaveOptions, MailMessageSaveType

mail_message = MailMessage.load(data_dir + "message.eml")

# Save as eml with preserved original boundaries
eml_save_options = EmlSaveOptions(MailMessageSaveType.eml_format)

mail_message.save(data_dir + "PreserveOriginalBoundaries_out.eml", eml_save_options)

ذخیره به صورت EML با حفظ پیوست‌های TNEF

قطعه کد زیر نشان می‌دهد چگونه به عنوان EML ذخیره کنید در حالی که پیوست‌های TNEF حفظ می‌شوند.

from aspose.email import MailMessage, EmlSaveOptions, MailMessageSaveType, FileCompatibilityMode

mail_message = MailMessage.load(data_dir + "message.eml")

# Save as eml with preserved attachment
eml_save_options = EmlSaveOptions(MailMessageSaveType.eml_format)
eml_save_options.file_compatibility_mode = FileCompatibilityMode.PRESERVE_TNEF_ATTACHMENTS

mail_message.save(data_dir + "PreserveTNEFAttachment_out.eml", eml_save_options)

بارگذاری EML، ذخیره به MSG

قطعه کد زیر نشان می‌دهد چگونه یک پیام EML را بارگذاری کنید و با استفاده از گزینه مناسب آن را به MSG تبدیل کنید از SaveOptions.

from aspose.email import MailMessage, SaveOptions, MailMessageSaveType, FileCompatibilityMode

# Initialize and Load an existing EML file by specifying the MessageFormat
eml = MailMessage.load(data_dir + "message.eml")

# Save the Email message to disk in ASCII format and Unicode format
eml.save(data_dir + "AnEmail_out.msg", SaveOptions.default_msg_unicode)

ذخیره به عنوان MSG با تاریخ‌های حفظ‌شده

این MsgSaveOptions کلاسی که به شما اجازه می‌دهد پیام منبع را به عنوان فایل پیام Outlook (MSG) ذخیره کنید در حالی که تاریخ‌ها حفظ می‌شوند. قطعه کد زیر نشان می‌دهد چگونه به عنوان MSG با تاریخ‌های حفظ‌شده ذخیره کنید.

from aspose.email import MailMessage, MsgSaveOptions, MailMessageSaveType, FileCompatibilityMode

# Initialize and Load an existing EML file by specifying the MessageFormat
eml = MailMessage.load(data_dir + "message.eml")

# Save as msg with preserved dates
msg_save_options = MsgSaveOptions(MailMessageSaveType.outlook_message_format_unicode)
msg_save_options.preserve_original_dates = True

eml.save(data_dir + "outTest_out.msg", msg_save_options)

ذخیرهٔ MailMessage به صورت MHTML

گزینه‌های مختلف MHTML می‌توانند برای دستیابی به نتایج مورد نظر استفاده شوند. قطعه کد زیر نشان می‌دهد چگونه یک پیام EML را بارگذاری کنید درMailMessage و آن را به MHTML تبدیل می‌کند.

from aspose.email import MailMessage, SaveOptions, MailMessageSaveType, FileCompatibilityMode

# Initialize and Load an existing EML file by specifying the MessageFormat
eml = MailMessage.load(data_dir + "message.eml")

eml.save(data_dir + "AnEmail_out.mhtml", SaveOptions.default_mhtml)

تبدیل به MHTML با تنظیمات اختیاری

این MhtSaveOptions کلاسی که گزینه‌های اضافی برای ذخیره پیام‌های ایمیل به قالب MHTML فراهم می‌کند. شمارنده MhtFormatOptions امکان نوشتن اطلاعات ایمیل اضافی به MHTML خروجی را فراهم می‌کند. فیلدهای اضافی زیر می‌توانند نوشته شوند:

  • NONE - هیچ تنظیم خاصی مشخص نشده است.
  • WRITE_HEADER - نشان می‌دهد که اطلاعات هدر باید نوشته شود.
  • WRITE_OUTLINE_ATTACHMENTS - نشان می‌دهد که پیوست‌های outline باید نوشته شوند.
  • WRITE_COMPLETE_EMAIL_ADDRESS - نشان می‌دهد که آدرس ایمیل کامل باید در تمام هدرهای ایمیل نوشته شود.
  • NO_ENCODE_CHARACTERS - نشان می‌دهد که هیچ کدگذاری انتقالی برای کاراکترها استفاده نشود.
  • HIDE_EXTRA_PRINT_HEADER - نشان می‌دهد که PageHeader نامرئی خواهد شد.
  • WRITE_COMPLETE_TO_EMAIL_ADDRESS - نشان می‌دهد که آدرس ایمیل کامل باید در هدر ‘To’ نوشته شود.
  • WRITE_COMPLETE_FROM_EMAIL_ADDRESS - نشان می‌دهد که آدرس ایمیل کامل باید در هدر ‘From’ نوشته شود.
  • WRITE_COMPLETE_CC_EMAIL_ADDRESS - نشان می‌دهد که آدرس ایمیل کامل باید در هدر ‘Cc’ نوشته شود.
  • WRITE_COMPLETE_BCC_EMAIL_ADDRESS - نشان می‌دهد که آدرس ایمیل کامل باید در هدر ‘Bcc’ نوشته شود.
  • RENDER_CALENDAR_EVENT - نشان می‌دهد که متن از رویداد تقویم باید در خروجی مhtml نوشته شود.
  • SKIP_BYTE_ORDER_MARK_IN_BODY - نشان می‌دهد که بایت‌های Byte Order Mark (BOM) باید در بدنه نوشته شوند.
  • RENDER_V_CARD_INFO - نشان می‌دهد که متن از VCard AlternativeView باید در خروجی mhtml نوشته شود.
  • DISPLAY_AS_OUTLOOK - نشان می‌دهد که هدر From همان‌طور که در Outlook نمایش داده می‌شود، نمایش داده شود.
  • RENDER_TASK_FIELDS - نشان می‌دهد که فیلدهای خاص Task باید در خروجی mhtml نوشته شوند.

قطعه کد زیر نشان می‌دهد چگونه فایل eml را به MHTML با تنظیمات اختیاری تبدیل کنید.

from aspose.email import MailMessage, MhtSaveOptions, MhtFormatOptions, MailMessageSaveType, FileCompatibilityMode

# Load an existing EML file
eml = MailMessage.load(data_dir + "message.eml")

# Save as mht with header
mht_save_options = MhtSaveOptions()

# Specify formatting options required
# Here we are specifying to write header information to output without writing extra print header
# and the output headers should be displayed as the original headers in the message
mht_save_options.mht_format_options = MhtFormatOptions.WRITE_HEADER | MhtFormatOptions.HIDE_EXTRA_PRINT_HEADER | MhtFormatOptions.DISPLAY_AS_OUTLOOK

# Check the body encoding for validity.
mht_save_options.check_body_content_encoding = True

eml.save(data_dir + "outMessage_out.mht", mht_save_options)

رندر کردن رویدادهای تقویم هنگام تبدیل به MHTML

این MhtFormatOptions.RenderCalendarEvent رویدادهای تقویم را به خروجی MHTML رندر می‌کند. قطعه کد زیر نشان می‌دهد چگونه رویدادهای تقویم را هنگام تبدیل به MHTML رندر کنید.

from aspose.email import MailMessage, MhtSaveOptions, MhtFormatOptions, MhtTemplateName, MailMessageSaveType, FileCompatibilityMode

file_name = "message.msg"

# Load the MSG file
msg = MailMessage.load(data_dir + file_name)

# Create MHT save options
options = MhtSaveOptions()
options.mht_format_options = MhtFormatOptions.WRITE_HEADER | MhtFormatOptions.RENDER_CALENDAR_EVENT

# Save the message as MHTML
msg.save(data_dir + "Meeting with Recurring Occurrences.mhtml", options)

صادر کردن ایمیل به MHT بدون تصاویر درون‌خط

from aspose.email import MailMessage, MhtSaveOptions, MhtFormatOptions, MhtTemplateName, MailMessageSaveType, FileCompatibilityMode

# Load the EML file
eml = MailMessage.load(data_dir + "message.eml")

# Create MHT save options
mht_save_options = MhtSaveOptions()
mht_save_options.skip_inline_images = True

# Save the message as MHTML without inline images
eml.save(data_dir + "EmlToMhtmlWithoutInlineImages_out.mht", mht_save_options)

صادر کردن ایمیل به MHT با منطقهٔ زمانی سفارشی

MailMessage کلاس ویژگی TimeZoneOffset را برای تنظیم منطقهٔ زمانی سفارشی هنگام خروجی به MHT فراهم می‌کند. قطعه کد زیر نشان می‌دهد چگونه ایمیل را به MHT با منطقهٔ زمانی سفارشی صادر کنید.

from aspose.email import MailMessage, MhtSaveOptions, MhtFormatOptions, MhtTemplateName, MailMessageSaveType, FileCompatibilityMode
from datetime import timedelta

# Load the EML file
eml = MailMessage.load(data_dir + "message.eml")

# Set the local time for message date
eml.time_zone_offset = timedelta(hours=-8)

# The dates will be rendered by the local system time zone
mht_save_options = MhtSaveOptions()
mht_save_options.mht_format_options = MhtFormatOptions.WRITE_HEADER
eml.save(data_dir + "ExportEmailToMHTWithCustomTimezone_out.mhtml", mht_save_options)

صدور ایمیل به EML

قطعه کد زیر نشان می‌دهد چگونه ایمیل را به فرمت eml صادر کنید.

from aspose.email import MailMessage, SaveOptions

# Load the EML file
msg = MailMessage.load(data_dir + "message.eml")

# Save the Email message as EML
msg.save(data_dir + "ExporttoEml_out.eml", SaveOptions.default_eml)

ذخیرهٔ پیام به صورت HTML

این HtmlSaveOptions کلاسی که امکان صادرات بدنه پیام به HTML را با گزینهٔ ذخیرهٔ منابع جاسازی‌شده فراهم می‌کند. قطعه کد زیر نشان می‌دهد چگونه پیام را به عنوان HTML ذخیره کنید، که مقدار پیش‌فرض embed_resources برابر true است.

from aspose.email import MailMessage, SaveOptions, HtmlSaveOptions, HtmlFormatOptions

# Load the EML file
message = MailMessage.load(data_dir + "message.eml")

# Save the Email message as HTML
message.save(data_dir + "SaveAsHTML_out.html", SaveOptions.default_html)

# OR

eml = MailMessage.load(data_dir + "message.eml")
options = HtmlSaveOptions()
options.embed_resources = False
options.html_format_options = (
    HtmlFormatOptions.WRITE_HEADER
    | HtmlFormatOptions.WRITE_COMPLETE_EMAIL_ADDRESS
)  # save the message headers to output HTML using the formatting options
eml.save(data_dir + "SaveAsHTML1_out.html", options)

ذخیرهٔ پیام به عنوان قالب Outlook (.oft)

قطعه کد زیر نشان می‌دهد چگونه پیام را به عنوان قالب Outlook (.oft) ذخیره کنید.

from aspose.email import MailMessage, SaveOptions

eml = MailMessage("test@from.to", "test@to.to", "template subject", "Template body")

oft_eml_file_name = "EmlAsOft_out.oft"
options = SaveOptions.default_msg_unicode
options.save_as_template = True
eml.save(data_dir + oft_eml_file_name, options)