Carregando, Exibindo e Analisando Arquivo MSG
Este tópico explica como carregar um arquivo de Mensagem do Microsoft Outlook (*.msg). A classe MapiMessage é usada para carregar arquivos MSG e fornece várias funções de carregamento estático para diferentes cenários. O seguinte trecho de código mostra como carregar arquivos MSG de um arquivo ou de um stream.
Carregando Arquivos MSG
O seguinte trecho de código mostra como carregar arquivos MSG.
// O caminho para o diretório do arquivo.
string dataDir = RunExamples.GetDataDir_Outlook();
// Cria uma instância de MapiMessage a partir do arquivo
MapiMessage msg = MapiMessage.Load(dataDir + @"message.msg");
// Obtém o assunto
Console.WriteLine("Assunto:" + msg.Subject);
// Obtém o endereço do remetente
Console.WriteLine("De:" + msg.SenderEmailAddress);
// Obtém o corpo
Console.WriteLine("Corpo" + msg.Body);
// Obtém informações dos destinatários
Console.WriteLine("Destinatário: " + msg.Recipients);
// Obtém anexos
foreach (MapiAttachment att in msg.Attachments)
{
Console.Write("Nome do Anexo: " + att.FileName);
Console.Write("Nome de Exibição do Anexo: " + att.DisplayName);
}
O seguinte exemplo de código mostra como usar MailMessage para carregar uma mensagem no formato MSG.
MailMessage eml = MailMessage.Load("message.msg");
Deve-se notar que uma mensagem resultante é convertida para o formato EML, incluindo anexos de mensagens incorporadas. Não use este método de carregamento se você deseja preservar algumas propriedades específicas do formato msg da mensagem original.
Para preservar o formato original dos anexos de mensagem incorporados, use a propriedade msgLoadOptions.PreserveEmbeddedMessageFormat.
MsgLoadOptions msgLoadOptions = new MsgLoadOptions();
msgLoadOptions.PreserveEmbeddedMessageFormat = true;
var msg = MailMessage.Load(stream, msgLoadOptions);
Carregando de Stream
O seguinte trecho de código mostra como carregar um arquivo de um stream.
// Cria uma instância de MapiMessage a partir do arquivo
byte[] bytes = File.ReadAllBytes(dataDir + @"message.msg");
using (MemoryStream stream = new MemoryStream(bytes))
{
stream.Seek(0, SeekOrigin.Begin);
// Cria uma instância de MapiMessage a partir do arquivo
MapiMessage msg = MapiMessage.Load(stream);
// Obtém o assunto
Console.WriteLine("Assunto:" + msg.Subject);
// Obtém o endereço do remetente
Console.WriteLine("De:" + msg.SenderEmailAddress);
// Obtém o corpo
Console.WriteLine("Corpo" + msg.Body);
}
Convertendo EML para MSG preservando o formato EML incorporado
Arquivos EML podem ser carregados na classe MapiMessage instanciando um objeto MailMessage e passando-o para o método MapiMessage.FromMailMessage. 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 na classe MapiMessage enquanto preserva o formato dos arquivos EML incorporados.
Experimente!
Converta e-mails e arquivos de mensagens online com o gratuito Aplicativo de Conversão Aspose.Email.