Загрузка и сохранение сообщения

Определение форматов файлов

Апи 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 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 с дополнительными настройками

Этот MhtSaveOptions класс предоставляет дополнительные параметры для сохранения сообщений в формате MHTML. Перечисление MhtFormatOptions делает возможным запись дополнительной информации о письме в выходной MHTML. Можно записать следующие дополнительные поля:

  • NONE — специфические настройки не указаны.
  • WRITE_HEADER — указывает, что информация заголовка должна быть записана.
  • WRITE_OUTLINE_ATTACHMENTS — указывает, что контурные вложения должны быть записаны.
  • 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

Этот 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)