Cargar y guardar el mensaje
Detección de formatos de archivo
La API Aspose.Email ofrece la capacidad de detectar el formato de archivo del archivo de mensajes proporcionado. Para lograr esto, se puede usar el método DetectFileFormat de la clase FileFormatUtil. Se pueden usar las siguientes clases y métodos para detectar el formato de archivo cargado.
- Enum FileFormatType
- Class FileFormatInfo
- Class FileFormatUtil
- Método detect_file_format (stream)
- Método detect_file_format (file_path)
El siguiente fragmento de código 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))
Carga de 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)
Preservar el formato de los mensajes incrustados 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 función, el código de este artículo carga tres tipos de mensajes desde el disco y los guarda en otros formatos. La clase base SaveOptions y las clases EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions para ajustes adicionales al guardar MailMessage se puede usar para guardar mensajes en otros formatos. En el artículo se muestra cómo usar estas clases para guardar un correo electrónico de ejemplo como:
- Formato EML.
- Mensaje de Outlook.
- Formato MHTML.
- Formato HTML.
Cargar EML y guardar como EML
El siguiente fragmento de código muestra cómo cargar un mensaje EML y guardarlo en el disco con 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 conservando los límites originales
El siguiente fragmento de código muestra cómo cargar EML y guardar como EML conservando 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)
Guardar como EML Preservar los archivos adjuntos TNEF
El siguiente fragmento de código muestra cómo guardar como EML conservando los archivos 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 en MSG
El siguiente fragmento de código muestra cómo cargar un mensaje EML y convertirlo en MSG mediante 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
The MsgSaveOptions La clase le permite guardar el mensaje de origen como un archivo de mensajes de Outlook (MSG) conservando las 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
Se pueden usar diferentes opciones de MHTML para obtener los resultados deseados. El siguiente fragmento de código 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)
Conversión a MHTML con ajustes opcionales
The MhtSaveOptions La clase proporciona opciones adicionales para guardar mensajes de correo electrónico en formato MHTML. El enumerador MhtFormatOptions permite escribir información de correo electrónico adicional en el MHTML de salida. Se pueden escribir los siguientes campos adicionales:
- NINGUNO: no se especificó ninguna configuración específica.
- WRITE_HEADER: indica que se debe escribir la información del encabezado.
- WRITE_OUTLINE_ATTACHMENTS: indica que se deben escribir los anexos del esquema.
- WRITE_COMPLETE_EMAIL_ADDRESS: indica que la dirección de correo electrónico completa debe escribirse en todos los encabezados de correo electrónico.
- NO_ENCODE_CHARACTER: indica que no se debe utilizar ninguna codificación de transferencia de caracteres.
- HIDE_EXTRA_PRINT_HEADER: indica que PageHeader no será visible.
- WRITE_COMPLETE_TO_EMAIL_ADDRESS: indica que la dirección de correo electrónico completa debe escribirse en el encabezado «Para».
- WRITE_COMPLETE_FROM_EMAIL_ADDRESS: indica que la dirección de correo electrónico completa debe escribirse en el encabezado «De».
- WRITE_COMPLETE_CC_EMAIL_ADDRESS: indica que la dirección de correo electrónico completa debe escribirse en el encabezado «Cc».
- WRITE_COMPLETE_BCC_EMAIL_ADDRESS: indica que la dirección de correo electrónico completa debe escribirse en el encabezado «Bcc».
- RENDER_CALENDAR_EVENT: indica que el texto del evento del calendario debe escribirse en el formato mhtml de salida.
- SKIP_BYTE_ORDER_MARK_IN_BODY: indica que los bytes de la marca de orden de bytes (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 Desde se mostrará como en Outlook.
- RENDER_TASK_FIELDS: indica que los campos de tareas específicos deben escribirse en el mhtml de salida.
El siguiente fragmento de código muestra cómo convertir un archivo eml a MHTML con ajustes 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)
Representación de eventos del calendario durante la conversión a MHTML
The MhtFormatOptions.RenderCalendarEvent renderiza los eventos del calendario en el MHTML de salida. El siguiente fragmento de código muestra cómo representar los eventos del calendario durante la conversión 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)
Exportación de correo electrónico a MHT sin imágenes en línea
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)
Exportación de correo electrónico 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 muestra cómo exportar un correo electrónico a MHT con una 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)
Exportación de correo electrónico a EML
El siguiente fragmento de código muestra cómo exportar el correo electrónico 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
The HtmlSaveOptions La clase le permite exportar el cuerpo del mensaje a HTML con la opción de guardar los recursos incrustados. El siguiente fragmento de código muestra cómo guardar un mensaje como HTML cuando 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 el mensaje como archivo de plantilla de Outlook (.oft)
El siguiente fragmento de código 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)