Cargar y guardar mensaje de correo electrónico

Cargar mensaje de correo

Cargar desde EML

Esta sección describe cómo cargar un archivo EML en un objeto MailMessage usando el EmlLoadOptions clase. La clase EmlLoadOptions proporciona varias opciones para personalizar cómo se carga el archivo EML, como conservar formatos de mensajes incrustados o controlar el comportamiento de carga de adjuntos TNEF.

  1. Inicialice una instancia de EmlLoadOptions.
  2. Configure las opciones de carga según sea necesario.
  3. Utilice el MailMessage.Load() método para cargar el archivo EML con las opciones especificadas.
using Aspose.Email;

// Initialize EmlLoadOptions
var loadOptions = new EmlLoadOptions
{
    // Configure load options
    PreferredTextEncoding = Encoding.UTF8, // Sets preferred encoding for the message
    PreserveEmbeddedMessageFormat = true, // Preserve format of embedded messages
    PreserveTnefAttachments = true, // Control TNEF attachment loading
    RemoveSignature = false // Do not remove the signature
};

// Load the EML file
var eml = MailMessage.Load("file.eml", loadOptions);

Propiedades de EmlLoadOptions

  • PreferredTextEncoding: Establece la codificación preferida para el asunto y cuerpo del mensaje. El valor predeterminado es null.
  • PreserveEmbeddedMessageFormat: Indica si se debe conservar el formato de los mensajes incrustados durante la carga. El valor predeterminado es false.
  • PreserveTnefAttachments: Controla el comportamiento de carga de adjuntos TNEF. El valor predeterminado es false.
  • RemoveSignature: Especifica si la firma debe eliminarse al cargar. El valor predeterminado es false.

Conservar formato de mensaje incrustado

Cargar Mensaje Con Firma/Sin Firma

La preservación de firmas está soportada por defecto al cargar archivos EML. Para eliminar la firma, puedes establecer el LoadOptions.RemoveSignature propiedad a true.

El ejemplo de código a continuación muestra cómo eliminar una firma al cargar un mensaje:

var msg = MailMessage.Load(fileName, new EmlLoadOptions() { RemoveSignature = true});

Cargar desde EMLX

La siguiente sección cubre la carga de un archivo EMLX con el EmlxLoadOptions clase. Esta clase proporciona opciones similares a EmlLoadOptions, ofreciendo control sobre la codificación, eliminación de firmas y más.

  1. Instancia los EmlxLoadOptions.
  2. Configura las propiedades según sea necesario.
  3. Utilice el MailMessage.Load() método para cargar el archivo EMLX.
using Aspose.Email;

// Instantiate EmlxLoadOptions
var loadOptions = new EmlxLoadOptions
{
    // Configure load options
    PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
    PreserveEmbeddedMessageFormat = true, // Preserve embedded message formats
    RemoveSignature = true // Remove signatures during loading
};

// Load the EMLX file
var emlx = MailMessage.Load("file.emlx", loadOptions);

Propiedades de EmlxLoadOptions

  • PreferredTextEncoding: Establece la codificación preferida para el asunto y cuerpo del mensaje. El valor predeterminado es null.
  • PreserveEmbeddedMessageFormat: Indica si se debe preservar el formato de los mensajes incrustados. El valor predeterminado es false.
  • RemoveSignature: Especifica si se debe eliminar la firma durante la carga. El valor predeterminado es false.

Cargar desde HTML

Aprende cómo cargar un archivo HTML en un MailMessage usando el HtmlLoadOptions clase. Esta clase está diseñada específicamente para manejar contenido HTML con opciones para gestionar recursos y agregar vistas de texto plano.

  1. Inicializa una instancia de HtmlLoadOptions.
  2. Configura las propiedades necesarias.
  3. Utilice el MailMessage.Load() método para cargar el archivo HTML con las opciones especificadas.
using Aspose.Email;

// Initialize HtmlLoadOptions
var loadOptions = new HtmlLoadOptions
{
    // Configure load options
    PathToResources = "resources/", // Path to directory containing resource files
    PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
    ShouldAddPlainTextView = true // Add plain text view of the body
};

// Load the HTML file
var html = MailMessage.Load("file.html", loadOptions);

Propiedades de HtmlLoadOptions

  • PathToResources: Define la ruta al directorio que contiene archivos de recursos (imágenes, por ejemplo).
  • PreferredTextEncoding: Establece la codificación preferida para el asunto y el cuerpo del mensaje. El valor predeterminado es null.
  • PreserveEmbeddedMessageFormat: Determina si preservar el formato de los mensajes incrustados. El valor predeterminado es false.
  • ShouldAddPlainTextView: Especifica si se debe agregar una vista de texto plano del cuerpo del mensaje. El valor predeterminado es false.

Cargar desde MHTML

Esta sección explica cómo cargar un archivo MHTML usando el MhtmlLoadOptions clase. La clase MhtmlLoadOptions ofrece opciones para gestionar la codificación, preservar los formatos de mensajes incrustados y manejar los adjuntos TNEF.

  1. Crea una instancia de MhtmlLoadOptions.
  2. Configura las propiedades deseadas.
  3. Carga el archivo MHTML usando el MailMessage.Load() método.
using Aspose.Email;

// Create MhtmlLoadOptions
var loadOptions = new MhtmlLoadOptions
{
    // Set load options
    PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
    PreserveEmbeddedMessageFormat = true, // Preserve format of embedded messages
    PreserveTnefAttachments = true, // Handle TNEF attachments
    RemoveSignature = false // Keep the signature
};

// Load the MHTML file
var mhtml = MailMessage.Load("file.mht", loadOptions);

Propiedades de MhtmlLoadOptions

  • MessageFormat: Representa el formato del mensaje de correo, que puede ser EML, MSG o MHTML. El valor predeterminado es EML.
  • PreferredTextEncoding: Establece la codificación preferida para el asunto y cuerpo del mensaje. El valor predeterminado es null.
  • PreserveEmbeddedMessageFormat: Determina si preservar el formato de los mensajes incrustados. El valor predeterminado es false.
  • PreserveTnefAttachments: Controla el comportamiento de carga de adjuntos TNEF. El valor predeterminado es false.
  • RemoveSignature: Especifica si se debe eliminar la firma durante la carga. El valor predeterminado es false.

Cargar desde MSG

Esta sección explica cómo cargar un archivo MSG en un objeto MailMessage usando el MsgLoadOptions clase. La clase MsgLoadOptions ofrece varias propiedades para manejar cómo se cargan los archivos MSG, incluidas opciones para preservar el contenido RTF o gestionar los adjuntos TNEF.

  1. Crea una instancia de MsgLoadOptions.
  2. Establece las propiedades deseadas para personalizar la carga.
  3. Cargue el archivo MSG usando el MailMessage.Load() método.
using Aspose.Email;

// Create MsgLoadOptions
var loadOptions = new MsgLoadOptions
{
    // Set load options
    KeepOriginalEmailAddresses = true, // Preserve original email addresses
    PreferredTextEncoding = Encoding.UTF8, // Set preferred encoding
    PreserveRtfContent = true, // Keep RTF content in the message
    PreserveTnefAttachments = true, // Handle TNEF attachments
    RemoveSignature = false, // Keep the signature
    Timeout = 5000 // Set timeout to 5 seconds
};

// Load the MSG file
var msg = MailMessage.Load("file.msg", loadOptions);

Propiedades de MsgLoadOptions

  • KeepOriginalEmailAddresses: Indica si se deben conservar las direcciones de correo originales. El valor predeterminado es false.
  • PreferredTextEncoding: Define la codificación preferida para el asunto y el cuerpo del mensaje. El valor predeterminado es null.
  • PreserveEmbeddedMessageFormat: Determina si se debe preservar el formato de los mensajes incrustados. El valor predeterminado es false.
  • PreserveRtfContent: Especifica si se debe mantener el contenido del cuerpo RTF en el MailMessage. El valor predeterminado es false.
  • PreserveTnefAttachments: Gestiona el comportamiento de carga de los adjuntos TNEF. El valor predeterminado es false.
  • RemoveSignature: Decide si eliminar la firma durante la carga. El valor predeterminado es false.
  • Tiempo de espera: Limita el tiempo de formateo en milisegundos durante la conversión. El valor predeterminado es 3000 ms.

Cargar desde TNEF

Aprende cómo cargar un archivo TNEF eml con el TnefLoadOptions clase. Esta clase proporciona opciones para gestionar la codificación y eliminar firmas durante el proceso de carga.

  1. Instancie los TnefLoadOptions.
  2. Configure las propiedades según sea necesario.
  3. Utilice el MailMessage.Load() método para cargar el archivo TNEF.
using Aspose.Email;

// Instantiate TnefLoadOptions
var loadOptions = new TnefLoadOptions
{
    // Configure load options
    PreferredTextEncoding = Encoding.UTF8, // Set encoding preference
    PreserveEmbeddedMessageFormat = true, // Preserve embedded message formats
    RemoveSignature = true // Remove signatures during loading
};

// Load the TNEF file
var tnef = MailMessage.Load("file.eml", loadOptions);

Propiedades de TnefLoadOptions

  • MessageFormat: Representa el formato del mensaje de correo, como EML, MSG o MHTML. El valor predeterminado es EML.
  • PreferredTextEncoding: Establece la codificación preferida para el asunto y cuerpo del mensaje. El valor predeterminado es null.
  • PreserveEmbeddedMessageFormat: Indica si se debe preservar el formato de los mensajes incrustados. El valor predeterminado es false.
  • RemoveSignature: Especifica si se debe eliminar la firma durante la carga. El valor predeterminado es false.

Detección de formatos de archivo

La API Aspose.Email ofrece la capacidad de detectar el formato de archivo del mensaje proporcionado. El DetectFileFormat método de FileFormatUtil la clase 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 te muestra cómo detectar formatos de archivo.

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.

Guardar como EML

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

Preservar los Límites Originales

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

Preservar Adjuntos TNEF

El siguiente fragmento de código te muestra cómo guardar como EML preservando los archivos adjuntos TNEF.

Guardar EML a MSG

El siguiente fragmento de código muestra cómo cargar un mensaje EML y convertirlo a MSG usando la opción adecuada de SaveOptions.

Preservar Fechas

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

Guardar EML como MHTML

Diferentes opciones de MHTML pueden usarse para obtener los resultados deseados. El siguiente fragmento de código te muestra cómo cargar un mensaje EML en MailMessage y convertirlo a MHTML con una fecha de mensaje en el sistema UTC.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET

// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.DefaultMhtml;
saveOptions.PreserveOriginalDate = false; // save a message date as UTC date

// Initialize and load an existing EML file
using (MailMessage mailMessage = MailMessage.Load(folderPath + "Message.eml"))
{
    mailMessage.Save(folderPath + "Message_out.mhtml", saveOptions);
}

Opciones de Conversión

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:

  • WriteHeader – escribe la cabecera del correo al archivo de salida.
  • WriteOutlineAttachments – escribe los adjuntos de esquema al archivo de salida.
  • WriteCompleteEmailAddress – escribe la dirección de correo completa al archivo de salida.
  • NoEncodeCharacters – no se debe usar codificación de transferencia de caracteres.
  • HideExtraPrintHeader – oculta la cabecera de impresión extra de la parte superior del archivo de salida.
  • WriteCompleteToEmailAddress – escribe la dirección de correo completa del destinatario al archivo de salida.
  • WriteCompleteFromEmailAddress – escribe la dirección de correo completa del remitente al archivo de salida.
  • WriteCompleteCcEmailAddress – escribe las direcciones de correo completas de los destinatarios en copia al archivo de salida.
  • WriteCompleteBccEmailAddress – escribe la dirección de correo completa de cualquier destinatario en copia oculta al archivo de salida.
  • RenderCalendarEvent – escribe texto del evento del calendario al archivo de salida.
  • SkipByteOrderMarkInBody – escribe los bytes de marca de orden de bytes (BOM) al archivo de salida.
  • RenderVCardInfo – escribe texto de VCard AlternativeView al archivo de salida.
  • DisplayAsOutlook – muestra la cabecera From.
  • RenderTaskFields – escribe campos específicos de Tarea al archivo de salida.
  • None – No se especificó configuración.

El siguiente fragmento de código te muestra cómo convertir archivos EML a MHTML con configuraciones opcionales.

Renderizar Eventos de Calendario

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.

Exportando correo a MHT sin imágenes incrustadas

Exportar correo a MHT con zona horaria personalizada

MailMessage class proporciona el TimeZoneOffset propiedad para establecer la zona horaria personalizada al exportar a MHT. El siguiente fragmento de código le muestra cómo exportar correo electrónico a MHT con zona horaria personalizada.

Ajuste de Fuente

Guardar EML como HTML

El HtmlSaveOptions la clase le permite exportar el cuerpo del mensaje a HTML. El siguiente fragmento de código le muestra cómo guardar un mensaje como HTML.

Guardar sin Recursos Incrustados

Guardar EML como OFT

El siguiente fragmento de código le muestra cómo guardar un mensaje como una plantilla de Outlook (.oft).

Convertir EML a MSG (MailMessage a MapiMessage)

Para convertir un MailMessage objeto cargado desde un archivo EML a un MapiMessage objeto, use el MapiConversionOptions clase. Esta conversión es a menudo necesaria porque estos dos objetos sirven a propósitos diferentes y satisfacen necesidades distintas en el procesamiento de correo electrónico. MapiMessage está diseñado específicamente para la compatibilidad con Microsoft Outlook y Exchange Server, ya que se adhiere al formato Messaging Application Programming Interface (MAPI). Esto garantiza que los correos electrónicos convertidos a archivos MSG sean totalmente compatibles con los productos de Microsoft, permitiendo que se abran, modifiquen y gestionen directamente dentro de Outlook.

Esta conversión también es necesaria cuando los correos electrónicos deben archivarse, indexarse o procesarse por almacenamientos que requieren el formato MAPI, almacenamientos PST/OST, OLM, por ejemplo. El MapiConversionOptions la clase le permite especificar opciones adicionales, como preservar el formato original del mensaje, mantener las fechas originales y comprimir el cuerpo RTF durante la conversión. El siguiente ejemplo de código muestra cómo cargar un correo electrónico desde un archivo en formato .eml y convertirlo a formato .msg de Outlook, permitiendo la personalización pero asegurando que ciertas características del correo original se conserven durante la conversión.

  1. Cree una instancia de MapiConversionOptions y configure sus propiedades.
  2. Convertir el MailMessage objeto a un MapiMessage objeto usando las opciones de conversión configuradas.
MailMessage eml = MailMessage.Load("email.eml", new EmlLoadOptions());

// Create an instance of MapiConversionOptions
var conversionOptions = new MapiConversionOptions
{
    // Configure MapiConversionOptions
    Format = OutlookMessageFormat.Unicode, // Use Unicode format for MSG
    PreserveEmbeddedMessageFormat = true, // Preserve the format of embedded messages
    PreserveOriginalAddresses = true, // Keep original email addresses
    PreserveOriginalDates = true, // Preserve original dates
    PreserveEmptyDates = false, // Generate new dates if original are empty
    RemoveSignature = false, // Do not remove the signature
    UseBodyCompression = true, // Enable RTF body compression
    ForcedRtfBodyForAppointment = false // Disable forced RTF body for appointments
};

// Convert MailMessage to MapiMessage
MapiMessage msg = MapiMessage.FromMailMessage(eml, conversionOptions);

Propiedades disponibles de MapiConversionOptions

  • ASCIIFormat: Devuelve MapiConversionOptions configurado con OutlookMessageFormat como ASCII, con PreserveSignature establecer en false y UseBodyCompression establecer en false. Esta opción es útil cuando necesitas una conversión a formato ASCII simple.

  • UnicodeFormat: Devuelve MapiConversionOptions con OutlookMessageFormat establecer en Unicode, y ambos PreserveSignature y UseBodyCompression establecer en false. Usa esta opción para un soporte de caracteres más amplio en archivos MSG.

  • ForcedRtfBodyForAppointment: Cuando se establece en true, fuerza el uso del cuerpo RTF para citas de calendario. Esto es útil si deseas asegurar compatibilidad con ciertos clientes de correo. El valor predeterminado es true.

  • Format: Especifica el formato de salida para el archivo MSG. Puede establecerse en cualquiera de OutlookMessageFormat.ASCII o OutlookMessageFormat.Unicode, controlando si el MSG convertido debe usar codificación ASCII o Unicode.

  • PreserveEmbeddedMessageFormat: Determina si conservar el formato EML original de los mensajes incrustados durante la conversión a MapiMessage. Configurar esto en true asegura que los correos incrustados mantengan su estructura original. El valor predeterminado es false.

  • PreserveEmptyDates: Cuando se establece en true, conserva las fechas originales de guardado y modificación del EML. De lo contrario, se generarán nuevas fechas si las originales están vacías.

  • PreserveOriginalAddresses: Si se establece en true, conserva las direcciones de correo originales sin validación. Esto es útil cuando se trabaja con direcciones que pueden no cumplir con normas estrictas pero deben preservarse tal cual. El valor predeterminado es false.

  • PreserveOriginalDates: Garantiza que las fechas originales de envío y recepción se mantengan durante el proceso de conversión. Configurarlo en true conserva estas fechas para una mayor precisión histórica.

  • RemoveSignature: controla si la firma digital, si está presente, se eliminará del mensaje durante la conversión. El valor predeterminado es false, lo que significa que la firma se mantendrá a menos que se elimine explícitamente.

  • UseBodyCompression: Habilita la compresión del cuerpo RTF si se establece en true. Esto puede ayudar a reducir el tamaño del archivo MSG, especialmente al manejar mensajes grandes con formato rico.