
HTML es un formato ampliamente utilizado y fácilmente accesible que puede ser visto por una amplia gama de plataformas, navegadores web, incluyendo computadoras de escritorio y dispositivos móviles. En contraste, los archivos EML y MSG pueden requerir software específico o clientes de correo electrónico para ser vistos, lo que puede dificultar su acceso y visualización con el tiempo. Por lo tanto, convertir archivos MSG o EML a HTML los hace más fáciles de ver, particularmente para los destinatarios que pueden no tener clientes de correo electrónico o software compatibles.
Además, los archivos HTML son más fáciles de archivar y permanecen en un formato indexado y buscable.
Este artículo presenta un algoritmo para convertir rápidamente y fácilmente archivos MSG o EML a formato HTML usando C#, independientemente del propósito subyacente. Nuestro método confiable garantiza que el contenido del correo electrónico, incluyendo imágenes incrustadas, se preserve completamente sin pérdida alguna. Esto asegura que la integridad del correo electrónico se mantenga a lo largo del proceso de conversión.
El artículo cubre los siguientes temas:
- API de C# para convertir archivos EML/MSG a HTML
- Convertir archivos EML/MSG a HTML guardando imágenes por separado
- Convertir archivos EML/MSG a HTML guardando imágenes dentro de HTML
- Guardar HTML con un encabezado
API de C# para convertir archivos EML/MSG a HTML
Para la conversión de archivos EML/MSG a HTML, vamos a usar Aspose.Email for .NET. Es una API de procesamiento de correo electrónico que te permite manipular correos electrónicos y trabajar con formatos de archivo de clientes de correo electrónico populares como Thunderbird, Outlook, etc. Puedes descargar la DLL de la API o instalarla desde NuGet usando el siguiente comando:
PM> Install-Package Aspose.Email
Convertir archivos EML/MSG a HTML guardando imágenes por separado
Un archivo MSG típico tiene la siguiente vista:

Con nuestra API puedes establecer cualquier directorio en tu dispositivo y guardar el archivo HTML de destino con imágenes en una carpeta separada:

Usa el siguiente ejemplo de código para convertir un mensaje de correo electrónico en formato MSG o EML a un archivo HTML con imágenes, que se guardan en un directorio de destino. El código realiza los siguientes pasos:
- Primero, especifica las rutas de origen y destino para el archivo MSG/EML de origen y el archivo HTML, respectivamente, así como el directorio de destino para los recursos.
- Carga el archivo MSG o EML usando el método MailMessage.Load.
- Crea un objeto HtmlSaveOptions y establece la propiedad ResourceRenderingMode en SaveToFile.
- Define un delegado para el evento SaveResourceHandler de HtmlSaveOptions.
- Crea un directorio de destino para los recursos dentro del delegado si aún no existe.
- Guarda cada recurso en un archivo con un nombre de archivo dentro del delegado basado en el tipo de contenido del recurso.
- Llama al método Save de la instancia MailMessage, pasando el nombre del archivo HTML de destino y la instancia de HtmlSaveOptions para guardar el correo electrónico en formato HTML.
// MSG or EML filename | |
var msgFileName = Path.Combine(sourcePath, "A Day in the Park.msg"); | |
// target HTML | |
var htmlFileName = Path.Combine(targetPath, "A Day in the Park.html"); | |
// target directory to save images | |
var resourceDir = Path.Combine(targetPath, "A Day in the Park"); | |
// Load MSG or EML | |
var msg = MailMessage.Load(msgFileName); | |
// Create HTML save options | |
var htmlSaveOptions = new HtmlSaveOptions | |
{ | |
ResourceRenderingMode = ResourceRenderingMode.SaveToFile | |
}; | |
htmlSaveOptions.SaveResourceHandler += | |
(AttachmentBase attachment, out string resourceFileName) => | |
{ | |
if (!Directory.Exists(resourceDir)) | |
{ | |
Directory.CreateDirectory(resourceDir); | |
} | |
resourceFileName = Path.Combine(resourceDir, attachment.ContentType.Name); | |
attachment.Save(resourceFileName); | |
}; | |
msg.Save(htmlFileName, htmlSaveOptions); |
Convertir archivos EML/MSG a HTML guardando imágenes dentro de HTML
A veces, puedes preferir convertir archivos EML/MSG a HTML manteniendo imágenes incrustadas dentro de HTML.

El siguiente fragmento de código demuestra cómo convertir un archivo MSG o EML a formato HTML en C# y guardar las imágenes dentro de HTML. El código realiza los siguientes pasos:
- Define las rutas de origen y destino para el archivo de correo electrónico y la salida HTML.
- Carga el archivo MSG o EML usando el método MailMessage.Load.
- Crea una nueva instancia de la clase HtmlSaveOptions, que te permite configurar cómo se guarda el correo electrónico como HTML.
- Configura la instancia de HtmlSaveOptions para incrustar los recursos, incluyendo imágenes, directamente en el HTML.
- Llama al método Save de la instancia MailMessage, pasando el nombre del archivo HTML de destino y la instancia de HtmlSaveOptions para guardar el correo electrónico en formato HTML.
// MSG or EML filename | |
var msgFileName = Path.Combine(sourcePath, "A Day in the Park.msg"); | |
// target HTML | |
var htmlFileName = Path.Combine(targetPath, "A Day in the Park.html"); | |
// Load MSG or EML | |
var msg = MailMessage.Load(msgFileName); | |
// Create HTML save options | |
var htmlSaveOptions = new HtmlSaveOptions | |
{ | |
ResourceRenderingMode = ResourceRenderingMode.EmbedIntoHtml | |
}; | |
msg.Save(htmlFileName, htmlSaveOptions); |
Guardar HTML con un encabezado
Como variante opcional, puedes guardar un HTML con un encabezado. El siguiente fragmento de código demuestra cómo guardar un HTML con un encabezado en C#:
// Create HTML save options | |
var htmlSaveOptions = new HtmlSaveOptions | |
{ | |
ResourceRenderingMode = ResourceRenderingMode.EmbedIntoHtml, | |
HtmlFormatOptions = HtmlFormatOptions.WriteHeader | |
}; |
Como resultado, se añadirá un encabezado de texto al HTML de destino:

Conclusión
Para resumir, en este artículo acabas de aprender sobre la conveniencia del formato HTML para archivar y gestionar tus archivos y cómo ejecutar la conversión de EML o MSG en C# utilizando la biblioteca Aspose.Email for .NET. Podías ver cuán rápido y fácil es el proceso de conversión con solo unas pocas líneas de código. En caso de que tengas alguna pregunta, no dudes en escribir a nuestro foro de soporte gratuito. También puedes aprender más sobre Aspose.Email for .NET, sus características y facilidades en nuestra documentación.