1. Introdução

GroupDocs.Viewer for .NET permite importar a mensagem de e‑mail em qualquer formato popular, renderizá‑la para HTML, PNG, JPEG e PDF, e também extrair propriedades básicas da mensagem de e‑mail sem necessidade de renderização real.

Na prática, ao trabalhar com mensagens de e‑mail no GroupDocs.Viewer, os usuários devem estar cientes de dois tipos específicos de e‑mail:

  • Classe Options.EmailOptions – permite controlar como a mensagem é renderizada (tamanho da página, formato de data, campos, etc.).
  • Classe Results.MailMessageViewInfo — é produzida pelo GroupDocs.Viewer após a chamada ao método GetViewInfo() e contém os metadados da mensagem de e‑mail carregada.

A seguir, um guia rápido que demonstra como renderizar mensagens de e‑mail e obter seus metadados.


2. Carregar uma mensagem de e‑mail e renderizá‑la para todos os formatos de saída

Um exemplo de código bem curto abaixo mostra como carregar a mensagem de e‑mail de entrada “sample.eml” em uma instância da classe Viewer e, em seguida, renderizá‑la para os 4 formatos de saída suportados: HTML, PDF, PNG e JPEG. Como pode ser visto, no início as 4 classes de opções de visualização são instanciadas, depois “sample.eml” é carregado na instância Viewer pelo caminho do arquivo e, por fim, são feitas 4 chamadas 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. Ajustando opções de e‑mail para renderização

O exemplo acima mostra a renderização com todas as opções definidas para seus valores padrão. Contudo, existe a classe EmailOptions, que está disponível nas 4 opções de visualização (HtmlViewOptions, PdfViewOptions, PngViewOptions, JpgViewOptions) por meio da propriedade EmailOptions. Não é necessário criar manualmente uma instância da classe EmailOptions e atribuí‑la às opções de visualização através da propriedade EmailOptions — tudo isso já é feito; o usuário só precisa ajustar os valores das propriedades, se necessário.

A classe EmailOptions possui várias propriedades, explicadas a seguir.

3.1. Tamanho da página

O enum PageSize controla o tamanho da página de saída. Por padrão é Unspecified — o GroupDocs.Viewer ajusta o tamanho ao mais apropriado. Pode ser definido da seguinte forma, por exemplo:

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

3.2. Formato de data e hora e fuso horário

Mensagens de e‑mail geralmente possuem uma data “Enviada”. A propriedade DateTimeFormat permite controlar como esse valor de data/hora será formatado, e TimeZoneOffset permite aplicar um deslocamento positivo ou negativo a essa data/hora. Exemplo abaixo:

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

Se DateTimeFormat for null ou uma string vazia, o GroupDocs.Viewer usará o formato atual do sistema.

3.3. Ajustando campos

A mensagem de e‑mail contém o corpo da mensagem e campos como assunto, data de envio, remetente etc. O GroupDocs.Viewer permite que os usuários sobrescrevam os rótulos desses campos através da propriedade FieldTextMap, que mapeia um valor do enum Field (por exemplo, Field.Subject) para o texto que aparece na saída renderizada por meio do Dictionary. Assim, o usuário pode substituir qualquer entrada ou adicionar novas:

PngViewOptions pngOptions = new PngViewOptions("image-page{0}.png");
pngOptions.EmailOptions.FieldTextMap[Field.Subject] = "Assunto do E‑mail";
pngOptions.EmailOptions.FieldTextMap[Field.Sent] = "E‑mail enviado em";
pngOptions.EmailOptions.FieldTextMap[Field.From] = "Remetente";

4. Carregar um e‑mail e obter suas informações de visualização

É possível obter alguns valores de campo da mensagem de e‑mail programaticamente sem renderizar a própria mensagem. Para isso, o usuário deve carregar o documento de e‑mail na instância Viewer e então usar o método de instância Viewer.GetViewInfo(), como mostrado abaixo:

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("De: {0}; Assunto: {1}; Enviado: {2}.", mailMessageInfo.From, mailMessageInfo.Subject, mailMessageInfo.Sent);

    // Renderizar para qualquer formato de saída, se necessário
    viewer.View(HtmlViewOptions.ForEmbeddedResources());
}

Observa‑se que o método Viewer.GetViewInfo() retorna uma instância da classe comum ViewInfo, que então é convertida para a classe MailMessageViewInfo. No momento, apenas os campos From, Subject e Sent são suportados.

Propriedade Tipo Significado
Sent DateTime O horário exato em que o e‑mail foi enviado.
Subject string O texto que aparece na linha de assunto do e‑mail.
From string O endereço de e‑mail do remetente como string simples.

Todas as três propriedades são somente leitura.

5. Resumo

  • Crie uma instância Viewer e especifique o arquivo de mensagem de e‑mail de entrada em seu construtor, por caminho ou fluxo.
  • Chame o método Viewer.GetViewInfo() e então converta seu resultado para o tipo MailMessageViewInfo para obter os metadados: campos Sent, Subject e From.
  • Use EmailOptions para alterar o tamanho da página, o formato de data, o deslocamento de fuso horário ou o rótulo de texto exibido para qualquer campo, e então chame o método Viewer.View().

Essas etapas fornecem as propriedades principais do e‑mail e permitem controlar como a mensagem aparece quando renderizada. Nenhuma biblioteca extra ou código complexo é necessário.

Veja Também

Obtenha uma avaliação gratuita

Você pode baixar uma versão de avaliação gratuita do GroupDocs.Viewer for .NET em releases.groupdocs.com. Também pode adquirir uma licença temporária para experimentar todos os recursos e funcionalidades sem restrições aqui.