Chargement et enregistrement du message

Détection des formats de fichiers

L’API Aspose.Email offre la capacité de détecter le format de fichier d’un message fourni. La méthode DetectFileFormat de la classe FileFormatUtil peut être utilisée à cet effet. Les classes et méthodes suivantes peuvent être utilisées pour détecter le format du fichier chargé.

Le fragment de code suivant montre comment détecter les formats de fichiers.

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

Chargement d’un message avec des options de chargement

L’extrait de code suivant montre comment charger un message avec des options de chargement.

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)

Conservation du format du message intégré lors du chargement

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

Enregistrement et conversion de messages

Aspose.Email facilite la conversion de tout type de message vers un autre format. Pour démontrer cette fonctionnalité, le code de cet article charge trois types de messages depuis le disque et les enregistre de nouveau dans d’autres formats. La classe de base SaveOptions et les classes EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions pour des paramètres supplémentaires lors de l’enregistrement MailMessage peut être utilisé pour enregistrer des messages dans d’autres formats. L’article montre comment utiliser ces classes pour enregistrer un e‑mail d’exemple en tant que :

  • format EML.
  • Outlook MSG.
  • format MHTML.
  • format HTML.

Chargement d’EML et enregistrement en EML

Le fragment de code suivant montre comment charger un message EML et l’enregistrer sur le disque dans le même format.

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)

Chargement d’EML et enregistrement en EML en conservant les délimitations d’origine

Le fragment de code suivant montre comment charger un EML et l’enregistrer en EML en conservant les délimitations d’origine.

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)

Enregistrement en EML en préservant les pièces jointes TNEF

Le fragment de code suivant montre comment enregistrer en EML en préservant les pièces jointes 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)

Chargement d’EML, enregistrement en MSG

L’extrait de code suivant vous montre comment charger un message EML et le convertir en MSG en utilisant l’option appropriée de 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)

Enregistrement au format MSG avec les dates préservées

Le MsgSaveOptions la classe vous permet d’enregistrer le message source en tant que fichier Outlook Message (MSG) en préservant les dates. L’extrait de code suivant vous montre comment enregistrer en MSG avec dates préservées.

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)

Enregistrement de MailMessage au format MHTML

Différentes options de MHTML peuvent être utilisées pour obtenir le résultat souhaité. Le fragment de code suivant montre comment charger un message EML dansMailMessage et le convertit en 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)

Conversion en MHTML avec des paramètres optionnels

Le MhtSaveOptions la classe fournit des options supplémentaires pour enregistrer des messages e‑mail au format MHTML. L’énumérateur MhtFormatOptions rend possible l’écriture d’informations e‑mail supplémentaires dans le MHTML de sortie. Les champs supplémentaires suivants peuvent être écrits :

  • NONE - Aucun paramètre spécifique n’est spécifié.
  • WRITE_HEADER - Indique que les informations d’en‑tête doivent être écrites.
  • WRITE_OUTLINE_ATTACHMENTS - Indique que les pièces jointes de contour doivent être écrites.
  • WRITE_COMPLETE_EMAIL_ADDRESS - Indique que l’adresse e‑mail complète doit être écrite dans tous les en‑têtes d’e‑mail.
  • NO_ENCODE_CHARACTERS - Indique qu’aucun encodage de transfert des caractères ne doit être utilisé.
  • HIDE_EXTRA_PRINT_HEADER - Indique que PageHeader sera invisible.
  • WRITE_COMPLETE_TO_EMAIL_ADDRESS - Indique que l’adresse e‑mail complète doit être écrite dans l’en‑tête ‘To’.
  • WRITE_COMPLETE_FROM_EMAIL_ADDRESS - Indique que l’adresse e‑mail complète doit être écrite dans l’en‑tête ‘From’.
  • WRITE_COMPLETE_CC_EMAIL_ADDRESS - Indique que l’adresse e‑mail complète doit être écrite dans l’en‑tête ‘Cc’.
  • WRITE_COMPLETE_BCC_EMAIL_ADDRESS - Indique que l’adresse e‑mail complète doit être écrite dans l’en‑tête ‘Bcc’.
  • RENDER_CALENDAR_EVENT - Indique que le texte provenant de l’événement du calendrier doit être écrit dans le mhtml de sortie.
  • SKIP_BYTE_ORDER_MARK_IN_BODY - Indique que les octets Byte Order Mark (BOM) doivent être écrits dans le corps.
  • RENDER_V_CARD_INFO - Indique que le texte provenant de VCard AlternativeView doit être écrit dans le mhtml de sortie.
  • DISPLAY_AS_OUTLOOK - Indique que l’en‑tête From sera affiché comme dans Outlook.
  • RENDER_TASK_FIELDS - Indique que les champs de tâche spécifiques doivent être écrits dans le mhtml de sortie.

Le fragment de code suivant montre comment convertir un fichier eml en MHTML avec des paramètres optionnels.

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)

Rendu des événements du calendrier lors de la conversion en MHTML

Le MhtFormatOptions.RenderCalendarEvent rendu les événements du calendrier en sortie MHTML. Le fragment de code suivant montre comment rendre les événements du calendrier lors de la conversion en 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)

Exportation d’un e‑mail vers MHT sans images intégrées

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)

Exportation d’e‑mail au format MHT avec un fuseau horaire personnalisé

MailMessage Cette classe fournit la propriété TimeZoneOffset pour définir un fuseau horaire personnalisé lors de l’exportation au format MHT. Le fragment de code suivant montre comment exporter un e‑mail au format MHT avec un fuseau horaire personnalisé.

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)

Exportation d’e‑mail en EML

Le fragment de code suivant montre comment exporter l’e‑mail au format 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)

Enregistrement du message au format HTML

Le HtmlSaveOptions Cette classe permet d’exporter le corps du message au format HTML avec l’option d’enregistrer les ressources incorporées. Le fragment de code suivant montre comment enregistrer le message au format HTML où la valeur par défaut de embed_resources est 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)

Enregistrement du message en tant que modèle Outlook (.oft)

Le fragment de code suivant montre comment enregistrer le message en tant que modèle 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)