Carregando e analisando arquivos MSG

Usando Aspose.Email para .NET, os desenvolvedores podem carregar e analisar conteúdos de arquivos de mensagem do Outlook.

  • Para carregar arquivos MSG do disco, use o estático MapiMessage.Load método do MapiMessage classe. A classe fornece várias funções estáticas de carregamento para diferentes cenários.
  • Para analisar o conteúdo de arquivos MSG, o MapiMessage exibe vários métodos e propriedades.

Neste artigo você aprenderá como carregar e analisar um arquivo MSG para exibir seu conteúdo. Os exemplos de código com etapas lhe darão uma compreensão clara de como implementar a funcionalidade de carregamento e análise de arquivos Outlook MSG em seu projeto.

Primeiro, aprenda a carregar arquivos MSG a partir de arquivo ou de stream.

Carregar Arquivos MSG

O trecho de código a seguir mostra como carregar arquivos MSG.

// Create an instance of MapiMessage from file
var msg = MapiMessage.Load(@"message.msg");

// Get subject
Console.WriteLine("Subject:" + msg.Subject);

// Get from address
Console.WriteLine("From:" + msg.SenderEmailAddress);

// Get body
Console.WriteLine("Body" + msg.Body);

// Get recipients information
Console.WriteLine("Recipient: " + msg.Recipients);

// Get attachments
foreach (var att in msg.Attachments)
{
    Console.Write("Attachment Name: " + att.FileName);
    Console.Write("Attachment Display Name: " + att.DisplayName);
}

O exemplo de código a seguir mostra como usar MailMessage para carregar uma mensagem em formato MSG.


var eml = MailMessage.Load("message.msg");

Deve‑se notar que a mensagem resultante é convertida para o formato EML, incluindo anexos de mensagens incorporadas. Não use este método de carregamento se quiser preservar algumas propriedades específicas do formato MSG da mensagem original.

Para preservar o formato original dos anexos de mensagens incorporadas, use o msgLoadOptions.PreserveEmbeddedMessageFormat propriedade.


var msgLoadOptions = new MsgLoadOptions();
msgLoadOptions.PreserveEmbeddedMessageFormat = true;
var msg = MailMessage.Load(stream, msgLoadOptions);

Carregar a partir de Stream

O trecho de código a seguir mostra como carregar um arquivo a partir de stream.

// Create an instance of MapiMessage from file
byte[] bytes = File.ReadAllBytes(@"message.msg");

using (MemoryStream stream = new MemoryStream(bytes))
{
    stream.Seek(0, SeekOrigin.Begin);
    // Create an instance of MapiMessage from file
    MapiMessage msg = MapiMessage.Load(stream);

    // Get subject
    Console.WriteLine("Subject:" + msg.Subject);

    // Get from address
    Console.WriteLine("From:" + msg.SenderEmailAddress);

    // Get body
    Console.WriteLine("Body" + msg.Body);

}

Converter EML para MSG Preservando o Formato EML Incorporado

Arquivos EML podem ser carregados em MapiMessage classe instanciando um MailMessage objeto e passá‑lo para MapiMessage.FromMailMessage método. Se o arquivo EML contiver arquivos EML incorporados, use MapiConversionOptions.PreserveEmbeddedMessageFormat para reter o formato dos arquivos EML incorporados. O trecho de código abaixo mostra como carregar arquivos EML em MapiMessage enquanto preserva o formato dos arquivos EML incorporados.

// Load the EML file into a MailMessage object
var mailMessage = MailMessage.Load(emlFilePath);

// Set conversion options to preserve the format of embedded EML messages
var options = new MapiConversionOptions
    {
        PreserveEmbeddedMessageFormat = true
    };

// Convert MailMessage to MapiMessage, preserving embedded EML files
var mapiMessage = MapiMessage.FromMailMessage(mailMessage, options);

// Save the converted message in MSG format
mapiMessage.Save(msgFilePath);

Analisar Arquivos de Mensagem do Outlook

Aspose.Email para .NET fornece o MapiMessage classe usada para abrir e analisar um arquivo MSG. Como pode haver muitos destinatários em um arquivo MSG, o MapiMessage A classe expõe o Destinatários propriedade que retorna um MapiRecipientCollection que representa uma coleção de MapiRecipient objetos. O MapiRecipient o objeto expõe ainda mais métodos para trabalhar com atributos de destinatário.

A sequência de etapas a seguir serve a esse propósito:

  1. Crie uma instância do MapiMessage classe usando o MapiMessage.Load método estático.
  2. Exiba o nome do remetente, assunto e corpo do arquivo MSG usando SenderName, Subject e Corpo propriedades.
  3. Use o Destinatários propriedade para obter uma referência à coleção de MapiRecipient objetos associados ao arquivo MSG.
  4. Itere sobre o MapiRecipientCollection coleção para exibir o conteúdo de cada MapiRecipient objeto por meio de seus métodos públicos.
//Instantiate an MSG file to load an MSG file from disk
var outlookMessageFile = MapiMessage.Load(dataDir + "message.msg");
//Display sender's name
Console.WriteLine("Sender Name : " + outlookMessageFile.SenderName);
//Display Subject
Console.WriteLine("Subject : " + outlookMessageFile.Subject);
//Display Body
Console.WriteLine("Body : " + outlookMessageFile.Body);
//Display Recipient's info
Console.WriteLine("Recipients : \n");

//Loop through the recipients collection associated with the MapiMessage object
foreach (var rcp in outlookMessageFile.Recipients)
{
	//Display recipient email address
	Console.WriteLine("Email : " + rcp.EmailAddress);
	//Display recipient name
	Console.WriteLine("Name : " + rcp.DisplayName);
	//Display recipient type
	Console.WriteLine("Recipient Type : " + rcp.RecipientType);
}