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étodoGetViewInfo()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
Viewere 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 tipoMailMessageViewInfopara obter os metadados: camposSent,SubjecteFrom. - Use
EmailOptionspara 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étodoViewer.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.