Extraindo Conteúdo de Mensagens de Emails

Exibindo Informações de Email na Tela

O MailMessage representa uma mensagem de email e permite que os desenvolvedores acessem as propriedades da mensagem de email. As informações do cabeçalho (discutidas em Extraindo Cabeçalhos de Email) podem ser extraídas e manipuladas de diferentes maneiras. Este artigo explica como exibir informações do cabeçalho de email selecionadas e o corpo do email na tela.

  1. Crie uma instância do MailMessage.
  2. Carregue uma mensagem de email na instância do MailMessage.
  3. Exiba o conteúdo do email na tela.

O código abaixo demonstra como carregar uma mensagem de email e exibir seu conteúdo - de, para, assunto e corpo do email - na tela.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the resource directory.
String dataDir = Utils.getSharedDataDir(DisplayEmailInformation.class) + "email/";
//Create MailMessage instance by loading an Eml file
MailMessage message = MailMessage.load(dataDir + "test.eml");
System.out.print("From: ");
//Gets the sender info
System.out.println(message.getFrom());
System.out.print("To: ");
//Gets the recipients info
System.out.println(message.getTo());
System.out.print("Subject: ");
//Gets the subject
System.out.println(message.getSubject());
System.out.print("HtmlBody: ");
//Gets the htmlbody
System.out.println(message.getHtmlBody());
System.out.print("TextBody: ");
//Gets the textbody
System.out.println(message.getTextBody());
System.out.print("HtmlBodyText: ");
//Gets the textbody from HTML
System.out.println(message.getHtmlBodyText());

Obtendo Data e Hora da Mensagem

A classe MailMessage pode ser usada para recuperar a data da mensagem em UTC ou no fuso horário local. Essa informação pode ser resumida da seguinte forma:

  1. MailMessage.getDate() - retorna a data em UTC
  2. MailMessage.getLocalDate() - retorna a data no fuso horário local
  3. MailMessage.isLocalDate Retorna true se MailMessage.getDate() estiver no fuso horário local

Extraindo Cabeçalhos de Email

O cabeçalho de email representa um conjunto padrão de campos de cabeçalho definidos pelo Internet e RFC incluídos nas mensagens de email da Internet. Um cabeçalho de email pode ser especificado usando a classe MailMessage. Tipos de cabeçalho comuns são definidos na classe HeaderType. É uma classe selada que funciona como uma enumeração normal.

Para extrair cabeçalhos de um email, siga estas etapas:

  1. Crie uma instância da classe MailMessage.
  2. Carregue uma mensagem de email na instância da classe MailMessage.
  3. Após uma mensagem de email ter sido carregada, obteremos seu conteúdo bruto. A própria classe MailMessage contém propriedades como De, Para, Cc, Assunto e assim por diante. Essas propriedades podem ser extraídas dos cabeçalhos.
  4. Exiba o conteúdo bruto.
// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
//Create MailMessage instance by loading an EML file
MailMessage message = MailMessage.load(dataDir + "test.eml");
System.out.println("Printing all Headers:\n\n");
//Print out all the headers
for (int i=0; i< message.getHeaders().size(); i++)
System.out.println(message.getHeaders().get(i));

Obter Valores de Cabeçalho Decodificados

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
MailMessage mail = MailMessage.load(dataDir + "test.eml");
String decodedValue = mail.getHeaders().getDecodedValue("Thread-Topic");
System.out.println(decodedValue);

Obter e Modificar o Cabeçalho de Disposição de Recurso Vinculado

O recurso vinculado pode ser acessado e manipulado programaticamente no objeto da mensagem de email. O método getContentDisposition() da classe LinkedResource obtém o cabeçalho Content-Disposition. O exemplo de código abaixo demonstra como acessar e modificar o nome do arquivo do recurso vinculado:

MailMessage eml = MailMessage.load(fileName);
eml.getLinkedResources().get_Item(0).getContentDisposition().setFileName("changed.png");

Obter o corpo HTML como texto puro

A classe MailMessage oferece o recurso de extrair o corpo HTML da mensagem como texto puro. A classe MailMessage fornece um método GetHtmlBodyText que retorna o corpo HTML como texto puro. O método GetHtmlBodyText aceita um parâmetro booleano que indica se o corpo deve conter URLs ou não. Passar o parâmetro como verdadeiro indica que o corpo HTML deve conter URLs.

O seguinte trecho de código demonstra o uso do método GetHtmlBodyText para extrair o corpo HTML do email como texto puro.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-Java
// The path to the File directory.
String dataDir = Utils.getSharedDataDir(GetHTMLBodyAsPlainText.class) + "email/";
MailMessage mail = MailMessage.load(dataDir + "HtmlWithUrlSample.eml");
String body_with_url = mail.getHtmlBodyText(true);// body will contain URL
String body_without_url = mail.getHtmlBodyText(false);// body will not contain URL
System.out.println("Body with URL: " + body_with_url);
System.out.println("Body without URL: " + body_without_url);