Завантаження, збереження та конвертація листів
Виявлення форматів електронної пошти
Aspose.Email API надає можливість визначити формат файлу наданого повідомлення. The DetectFileFormat метод FileFormatUtil Клас можна використати для досягнення цього. Наступні класи та методи можна використати для визначення формату завантаженого файлу:
- Перелічення FileFormatType
- Клас FileFormatInfo
- Клас FileFormatUtil
- Метод detect_file_format(stream)
- Метод detect_file_format(file_path)
Наведений нижче фрагмент коду показує, як виявити формати файлів:
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 може бути використано для додаткових налаштувань при збереженні листів у інших форматах. У статті показано, як використати ці класи для збереження прикладного листа у вигляді:
- EML‑формат.
- Outlook MSG.
- MHTML‑формат.
- HTML‑формат.
Збереження у 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 та зберегти його у тому ж форматі, зберігаючи оригінальні межі.
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)
Налаштування рядків меж MIME
Aspose.Email для .NET дозволяє налаштувати шаблон меж, що використовується у MIME‑повідомленнях. Це досягається через the boundaries_template властивість EmlSaveOptions клас.
Встановивши власний шаблон, ви можете визначити, як генеруються межі MIME. Шаблонний символ {#} буде замінено інкрементальним номером межі, що дозволяє створювати динамічні та читабельні рядки меж.
Якщо boundaries_template не встановлено (за замовчуванням None), бібліотека використовує свій внутрішній формат меж.
Наведений нижче приклад коду показує, як налаштувати рядки меж MIME під час збереження електронного листа у формат .eml:
import aspose.email as ae
# Create a sample MailMessage
message = ae.MailMessage()
message.subject = "Custom MIME Boundary"
message.body = "This message uses a custom MIME boundary template."
message.to.append(ae.MailAddress("recipient@example.com"))
# Configure save options with a custom boundary template
save_options = ae.EmlSaveOptions(ae.MailMessageSaveType.EML_FORMAT)
save_options.boundaries_template = "boundary--{#}"
# Save the message to .eml with custom boundaries
message.save("Custom_Boundary_Message.eml", save_options)
Ось приклад структури повідомлення з користувацькими межами, збереженими за допомогою коду, наведеного вище:
From: sender@example.com
To: recipient@example.com
Subject: Custom_Boundary_Message
Date: Fri, 27 Dec 2024 12:00:00 +0000
Content-Type: multipart/mixed;
boundary="boundary--1"
This is a multi-part message in MIME format.
--boundary--1
Content-Type: multipart/alternative; boundary="boundary--2"
--boundary--2
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="us-ascii"
This is the plain text content of the email.
--boundary--2
Content-Type: text/html; charset="windows-1251"
Content-Transfer-Encoding: quoted-printable
<html>
<body>
<p>This is the <b>HTML</b> content of the email.</p>
</body>
</html>
--boundary--2--
--boundary--1
Content-Type: application/octet-stream; name="report-2023-08.xlsx"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="report-2023-08.xlsx"
UEsDBBQABgAIAAAAIQBi7...
--boundary--1--
Збереження TNEF‑вкладень у файлах EML
Наведений нижче фрагмент коду показує, як зберегти файл 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)
Збереження у MSG
Наведений нижче фрагмент коду показує, як завантажити повідомлення EML і конвертувати його у MSG, використовуючи відповідну опцію з the 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 class дозволяє зберегти вихідне повідомлення у файл Outlook Message (MSG), зберігаючи дати. Наведений нижче фрагмент коду показує, як зберегти файл EML як 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)
Збереження у 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 class надає 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)
Збереження у HTML
The HtmlSaveOptions class дозволяє експортувати тіло повідомлення у 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)