Extrair Conteúdo da Mensagem de Email em C#

Exibir Informações de Email

O MailMessage representa uma mensagem de e‑mail e permite que desenvolvedores acessem propriedades da mensagem. As informações do cabeçalho (discutidas em Extraindo Cabeçalhos de E‑mail) pode ser extraído e manipulado de diferentes maneiras. Este artigo explica como exibir informações selecionadas de cabeçalhos de e‑mail e o corpo do e‑mail na tela. Para Exibir Informações de Email na Tela, siga estes passos:

  • Crie uma instância do MailMessage classe.
  • Carregue uma mensagem de e‑mail na MailMessage instância.
  • Exibir o conteúdo do e‑mail na tela.

O trecho de código a seguir mostra como exibir informações de e‑mail na tela.


// Create MailMessage instance by loading an Eml file
var message = MailMessage.Load("test.eml", new EmlLoadOptions());

// Gets the sender info, recipient info, Subject, htmlbody and textbody
Console.Write("From:");
Console.WriteLine(message.From);
Console.Write("To:");
Console.WriteLine(message.To);
Console.Write("Subject:");
Console.WriteLine(message.Subject);
Console.WriteLine("HtmlBody:");
Console.WriteLine(message.HtmlBody);
Console.WriteLine("TextBody");
Console.WriteLine(message.Body);

Extrair Cabeçalhos de Email

O cabeçalho de e‑mail representa um conjunto padrão de campos de cabeçalho definido pela Internet e RFC incluído nas mensagens de e‑mail. Um cabeçalho de e‑mail pode ser especificado usando o MailMessage classe. Os tipos de cabeçalho comuns são definidos em HeaderType classe. É uma classe selada que funciona como uma enumeração normal. Para extrair cabeçalhos de um e‑mail, siga estes passos:

  1. Crie uma instância do MailMessage classe.
  2. Carregue uma mensagem de e‑mail na instância de MailMessage classe.
  3. Depois que uma mensagem de e‑mail foi carregada, obteremos seu conteúdo bruto.

O MailMessage a própria class contém propriedades como From, To, Cc, Subject e assim por diante. Essas propriedades podem ser extraídas dos cabeçalhos.

O trecho de código a seguir mostra como extrair os cabeçalhos de e‑mail.

Obter Valores de Cabeçalho Decodificados

O trecho de código a seguir mostra como obter valores de cabeçalho decodificados.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
MailMessage mailMessage = MailMessage.Load(dataDir + "emlWithHeaders.eml");
string decodedValue = mailMessage.Headers.GetDecodedValue("Thread-Topic");
Console.WriteLine(decodedValue);

Extrair Corpo do Email

Obter Corpo em Texto Simples

O Corpo propriedade retorna uma representação em texto simples do corpo de uma mensagem.

string plainTextBody = mailMessage.Body;

Observação: Se a parte MIME text/plain estiver presente em uma mensagem, a propriedade retorna seus dados de texto. Caso contrário, ela retorna o conteúdo de texto separado da HtmlBody propriedade sem marcação HTML.

Obter Corpo HTML como Texto Simples

MailMessage classe fornece o recurso de extrair o corpo HTML da mensagem como texto simples. O MailMessage classe fornece um GetHtmlBodyText método que retorna o corpo HTML em texto simples. Este método analisa o HtmlBody propriedade e retorna o conteúdo de texto simples separado ignorando a marcação HTML. O GetHtmlBodyText o método aceita um parâmetro booleano que indica se o corpo deve conter URLs ou não. Passar o parâmetro como true indica que o corpo HTML deve conter URLs.

O trecho de código a seguir demonstra o uso de GetHtmlBodyText método para extrair o corpo HTML do e‑mail como texto simples.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// The path to the File directory.
string dataDir = RunExamples.GetDataDir_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

Console.WriteLine("Body with URL: " + body_with_url);
Console.WriteLine("Body without URL: " + body_without_url);

Acessar Endereço X.500 do Exchange

O MailAddress classe tem o X500Address propriedade construída para expor endereços formatados em X.500 do Exchange, se presentes em uma mensagem. Ela fornece acesso somente de leitura à string de endereço X.500 (Exchange) para MailAddress instâncias e retorna o endereço X.500 se estiver incluído nos metadados da mensagem, caso contrário retorna nulo ou vazio. Não é necessário analisar — a propriedade retorna a string X.500 bruta.

var mailMessage = MailMessage.Load(fileName);
string exaddr = mailMessage.From.X500Address;