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.
- Inicialice una instancia de EmlLoadOptions.
- Configure las opciones de carga según sea necesario.
- 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.
- Instancia los EmlxLoadOptions.
- Configura las propiedades según sea necesario.
- 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.
- Inicializa una instancia de HtmlLoadOptions.
- Configura las propiedades necesarias.
- 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.
- Crea una instancia de MhtmlLoadOptions.
- Configura las propiedades deseadas.
- 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.
- Crea una instancia de MsgLoadOptions.
- Establece las propiedades deseadas para personalizar la carga.
- 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 esfalse. - 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.
- Instancie los TnefLoadOptions.
- Configure las propiedades según sea necesario.
- 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.
- FileFormatType Clase
- FileFormatInfo Clase
- FileFormatUtil Clase
- FileFormatUtil.DetectFileFormat(Stream) Method
- FileFormatUtil.DetectFileFormat(String) Method
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.
- Cree una instancia de
MapiConversionOptionsy configure sus propiedades. - Convertir el
MailMessageobjeto a unMapiMessageobjeto 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
MapiConversionOptionsconfigurado conOutlookMessageFormatcomo ASCII, conPreserveSignatureestablecer en false yUseBodyCompressionestablecer en false. Esta opción es útil cuando necesitas una conversión a formato ASCII simple. -
UnicodeFormat: Devuelve
MapiConversionOptionsconOutlookMessageFormatestablecer en Unicode, y ambosPreserveSignatureyUseBodyCompressionestablecer 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.ASCIIoOutlookMessageFormat.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.