1. Introducción

GroupDocs.Viewer for .NET permite importar el mensaje de correo electrónico en cualquier formato popular, renderizarlo a HTML, PNG, JPEG y PDF, y también extraer propiedades básicas del mensaje sin necesidad de renderizarlo.

En realidad, al trabajar con mensajes de correo electrónico en GroupDocs.Viewer, los usuarios deben conocer dos tipos específicos de correo electrónico:

  • Clase Options.EmailOptions – permite controlar cómo se renderiza el mensaje (tamaño de página, formato de fecha, campos, etc.).
  • Results.MailMessageViewInfo — es generado por GroupDocs.Viewer después de llamar al método GetViewInfo() y contiene los metadatos del mensaje de correo cargado.

A continuación se muestra una guía rápida que explica cómo renderizar mensajes de correo electrónico y obtener sus metadatos.


2. Cargar un mensaje de correo electrónico y renderizarlo a todos los formatos de salida

El siguiente ejemplo de código muy breve muestra cómo cargar un mensaje de correo de entrada “sample.eml” en una instancia de la clase Viewer y luego renderizarlo a los 4 formatos de salida compatibles: HTML, PDF, PNG y JPEG. Como se puede observar, al principio se instancian las 4 clases de opciones de vista, luego “sample.eml” se carga en la instancia Viewer mediante su ruta de archivo, y a continuación se realizan 4 llamadas a Viewer.View().

using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;


HtmlViewOptions htmlOptions = HtmlViewOptions.ForEmbeddedResources("html-page{0}.html");
PdfViewOptions pdfOptions = new PdfViewOptions("Output.pdf");
PngViewOptions pngOptions = new PngViewOptions("image-page{0}.png");
JpgViewOptions jpegOptions = new JpgViewOptions("image-page{0}.jpeg");

using (Viewer viewer = new Viewer("sample.eml"))
{
    viewer.View(htmlOptions);
    viewer.View(pdfOptions);
    viewer.View(pngOptions);
    viewer.View(jpegOptions);
}

3. Ajustar las opciones de correo electrónico para la renderización

El ejemplo anterior muestra la renderización con todas las opciones establecidas en sus valores predeterminados. Sin embargo, existe la clase EmailOptions, y está disponible en las 4 opciones de vista (HtmlViewOptions, PdfViewOptions, PngViewOptions, JpgViewOptions) a través de la propiedad EmailOptions. No es necesario crear manualmente una instancia de la clase EmailOptions y asignarla a las opciones de vista mediante la propiedad EmailOptions; todo esto ya está hecho, el usuario solo necesita ajustar los valores de las propiedades si lo requiere.

Hay varias propiedades en la clase EmailOptions, explicadas a continuación.

3.1. Tamaño de página

Controla el tamaño de la página de salida. Por defecto es Unspecified — GroupDocs.Viewer ajusta el tamaño al más apropiado. Puede establecerse de la siguiente manera, por ejemplo:

PdfViewOptions pdfOptions = new PdfViewOptions("Output.pdf");
pdfOptions.EmailOptions.PageSize = PageSize.A1;

3.2. Formato de fecha y hora y zona horaria

Los mensajes de correo electrónico suelen tener una fecha de “Envío”. La propiedad DateTimeFormat permite controlar cómo se formatea este valor de fecha y hora, y TimeZoneOffset permite aplicar un desplazamiento positivo o negativo a dicha fecha y hora. Ejemplo a continuación:

JpgViewOptions jpegOptions = new JpgViewOptions("image-page{0}.jpeg");
jpegOptions.EmailOptions.DateTimeFormat = "MM d yyyy HH:mm tt zzz"; // formato completamente personalizado
jpegOptions.EmailOptions.TimeZoneOffset = TimeSpan.FromHours(-5); // Desplazar 5 horas hacia atrás

Si deja DateTimeFormat como null o una cadena vacía, GroupDocs.Viewer utiliza el formato actual del sistema.

3.3. Ajuste de campos

El mensaje de correo contiene el cuerpo del mensaje y campos como asunto, fecha de envío, remitente, etc. GroupDocs.Viewer permite a los usuarios sobrescribir las etiquetas de estos campos mediante la propiedad FieldTextMap, que asigna un valor del enum Field (p. ej., Field.Subject) al texto que aparece en la salida renderizada. Así, el usuario puede reemplazar cualquier entrada o agregar nuevas:

PngViewOptions pngOptions = new PngViewOptions("image-page{0}.png");
pngOptions.EmailOptions.FieldTextMap[Field.Subject] = "Email Subject";
pngOptions.EmailOptions.FieldTextMap[Field.Sent] = "Mail was sent at";
pngOptions.EmailOptions.FieldTextMap[Field.From] = "Sender";

4. Cargar un correo y obtener su información de vista

Es posible obtener algunos de los valores de los campos del mensaje de correo electrónicamente sin renderizar el mensaje en sí. Para ello, el usuario debe cargar el documento de correo electrónico en la instancia Viewer y luego usar el método de instancia Viewer.GetViewInfo(), como se muestra a continuación:

using System;
using GroupDocs.Viewer;
using GroupDocs.Viewer.Options;
using GroupDocs.Viewer.Results;
// ...

using (Viewer viewer = new Viewer("sample.eml"))
{
    ViewInfo generalInfo = viewer.GetViewInfo(ViewInfoOptions.ForHtmlView());
    // casting explícito
    MailMessageViewInfo mailMessageInfo = (MailMessageViewInfo)generalInfo;
    Console.WriteLine("From: {0}; Subject: {1}; Sent: {2}.", mailMessageInfo.From, mailMessageInfo.Subject, mailMessageInfo.Sent);

    // Renderizar a cualquier formato de salida si es necesario
    viewer.View(HtmlViewOptions.ForEmbeddedResources());
}

Se puede observar que el método Viewer.GetViewInfo() devuelve una instancia de la clase común ViewInfo, que luego se convierte al tipo MailMessageViewInfo. Por ahora solo se admiten los campos From, Subject y Sent.

Propiedad Tipo Significado
Sent DateTime La hora exacta en que se envió el correo.
Subject string El texto que aparece en la línea de asunto del correo.
From string La dirección de correo del remitente como cadena simple.

Las tres propiedades son de solo lectura.

5. Resumen

  • Cree una instancia de Viewer y especifique el archivo de mensaje de correo electrónico de entrada en su constructor mediante ruta o flujo.
  • Llame al método Viewer.GetViewInfo y luego convierta su resultado al tipo MailMessageViewInfo para obtener los metadatos: campos Sent, Subject y From.
  • Utilice EmailOptions para cambiar el tamaño de página, el formato de fecha, el desplazamiento de zona horaria o la etiqueta de texto mostrada para cualquier campo, y luego invoque el método Viewer.View().

Estos pasos le proporcionan las propiedades principales del correo electrónico y le permiten controlar cómo aparece el mensaje al renderizarlo. No se requieren bibliotecas adicionales ni código complejo.

Ver también

Obtén una prueba gratuita

Puede descargar una versión de prueba gratuita de GroupDocs.Viewer for .NET desde releases.groupdocs.com. También puede adquirir una licencia temporal para probar todas las funciones y características sin restricciones desde here.