Завантаження та збереження повідомлення

Визначення форматів файлів

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 з збереженими датами

The MsgSaveOptions клас дозволяє зберегти вихідне повідомлення у файл Outlook Message (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 з додатковими налаштуваннями

The 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 – вказує, що текст події календаря має бути записаний у вихідному mhtml.
  • SKIP_BYTE_ORDER_MARK_IN_BODY — вказує, що байти маркера порядку байтів (BOM) мають бути записані у тіло.
  • RENDER_V_CARD_INFO – вказує, що текст з VCard AlternativeView має бути записаний у вихідному mhtml.
  • DISPLAY_AS_OUTLOOK – вказує, що заголовок From буде відображатися як у Outlook.
  • RENDER_TASK_FIELDS – вказує, що специфічні поля завдання мають бути записані у вихідному 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

The 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

The 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)