Cargar y guardar mensaje

Detección de formatos de archivo

La API Aspose.Email proporciona la capacidad de detectar el formato de archivo del mensaje proporcionado. El método DetectFileFormat de la clase FileFormatUtil puede usarse para lograr esto. Las siguientes clases y métodos pueden usarse para detectar el formato del archivo cargado.

El siguiente fragmento de código le muestra cómo detectar formatos de archivo.

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

Cargando un mensaje con opciones de carga

El siguiente fragmento de código muestra cómo cargar un mensaje con opciones de carga.

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)

Conservando el formato de mensaje incrustado durante la carga

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

Guardar y convertir mensajes

Aspose.Email facilita la conversión de cualquier tipo de mensaje a otro formato. Para demostrar esta característica, el código de este artículo carga tres tipos de mensajes desde el disco y los guarda nuevamente en otros formatos. La clase base SaveOptions y las clases EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions para configuraciones adicionales al guardar MailMessage puede usarse para guardar mensajes en otros formatos. El artículo muestra cómo usar estas clases para guardar un correo de ejemplo como:

  • Formato EML.
  • Outlook MSG.
  • Formato MHTML.
  • Formato HTML.

Cargar EML y guardar como EML

El siguiente fragmento de código le muestra cómo cargar un mensaje EML y guardarlo en disco en el mismo formato.

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)

Cargar EML y guardar como EML preservando los límites originales

El siguiente fragmento de código le muestra cómo cargar EML y guardarlo como EML preservando los límites originales.

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)

Guardando como EML Preservando Adjuntos TNEF

El siguiente fragmento de código le muestra cómo guardar como EML preservando los adjuntos 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)

Cargar EML, guardar como MSG

El siguiente fragmento de código te muestra cómo cargar un mensaje EML y convertirlo a MSG utilizando la opción adecuada 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)

Guardar como MSG con fechas preservadas

El MsgSaveOptions la clase te permite guardar el mensaje de origen como un archivo de Outlook Message (MSG) preservando fechas. El siguiente fragmento de código muestra cómo guardar como MSG con Fechas Preservadas.

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)

Guardar MailMessage como MHTML

Diferentes opciones de MHTML pueden usarse para obtener los resultados deseados. El siguiente fragmento de código le muestra cómo cargar un mensaje EML enMailMessage y lo convierte a 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)

Convertir a MHTML con configuraciones opcionales

El MhtSaveOptions la clase proporciona opciones adicionales para guardar mensajes de correo en formato MHTML. El enumerador MhtFormatOptions permite escribir información adicional del correo al MHTML de salida. Los siguientes campos adicionales pueden escribirse:

  • NONE - No se especifican configuraciones específicas.
  • WRITE_HEADER - Indica que la información del encabezado debe escribirse.
  • WRITE_OUTLINE_ATTACHMENTS - Indica que los adjuntos de esquema deben escribirse.
  • WRITE_COMPLETE_EMAIL_ADDRESS - Indica que la dirección de correo completa debe escribirse en todos los encabezados de correo.
  • NO_ENCODE_CHARACTERS - Indica que no se debe usar codificación de transferencia de caracteres.
  • HIDE_EXTRA_PRINT_HEADER - Indica que PageHeader será invisible.
  • WRITE_COMPLETE_TO_EMAIL_ADDRESS - Indica que la dirección de correo completa debe escribirse en el encabezado ‘To’.
  • WRITE_COMPLETE_FROM_EMAIL_ADDRESS - Indica que la dirección de correo completa debe escribirse en el encabezado ‘From’.
  • WRITE_COMPLETE_CC_EMAIL_ADDRESS - Indica que la dirección de correo completa debe escribirse en el encabezado ‘Cc’.
  • WRITE_COMPLETE_BCC_EMAIL_ADDRESS - Indica que la dirección de correo completa debe escribirse en el encabezado ‘Bcc’.
  • RENDER_CALENDAR_EVENT - Indica que el texto del evento del calendario debe escribirse en el mhtml de salida.
  • SKIP_BYTE_ORDER_MARK_IN_BODY - Indica que los bytes de Byte Order Mark (BOM) deben escribirse en el cuerpo.
  • RENDER_V_CARD_INFO - Indica que el texto de VCard AlternativeView debe escribirse en el mhtml de salida.
  • DISPLAY_AS_OUTLOOK - Indica que el encabezado From se mostrará como en Outlook.
  • RENDER_TASK_FIELDS - Indica que los campos específicos de Task deben escribirse en el mhtml de salida.

El siguiente fragmento de código le muestra cómo convertir un archivo EML a MHTML con configuraciones opcionales.

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)

Renderizar eventos del calendario al convertir a MHTML

El MhtFormatOptions.RenderCalendarEvent Renderiza los eventos del calendario al MHTML de salida. El siguiente fragmento de código le muestra cómo renderizar los eventos del calendario al convertir a 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)

Exportando correo a MHT sin imágenes incrustadas

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)

Exportar correo a MHT con zona horaria personalizada

MailMessage La clase proporciona la propiedad TimeZoneOffset para establecer una zona horaria personalizada al exportar a MHT. El siguiente fragmento de código le muestra cómo exportar un correo a MHT con zona horaria personalizada.

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)

Exportar correo electrónico a EML

El siguiente fragmento de código le muestra cómo exportar el correo a 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)

Guardar mensaje como HTML

El HtmlSaveOptions La clase permite exportar el cuerpo del mensaje a HTML con la opción de guardar recursos incrustados. El siguiente fragmento de código le muestra cómo guardar el mensaje como HTML donde el valor predeterminado de embed_resources es 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)

Guardar mensaje como plantilla de Outlook (.oft)

El siguiente fragmento de código le muestra cómo guardar el mensaje como archivo de plantilla de 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)