Leia o arquivo MSG do Outlook usando Java

O MSG é um formato de arquivo de e-mail usado pelo MS Outlook. É um item do Outlook que permite armazenar e-mails, contatos, mensagens, tarefas, compromissos, etc. Em certos casos, podemos precisar ler arquivos MSG do Outlook em aplicativos Java e extrair propriedades como assunto, destinatários, remetente, corpo, etc. Neste artigo, aprenderemos como ler um arquivo MSG do Outlook usando Java.

Os seguintes tópicos serão abordados neste artigo:

API Java para ler o arquivo MSG do Outlook

Para ler o arquivo MSG do Outlook, usaremos a API Aspose.Email for Java. Ele permite criar, enviar, ler e manipular mensagens de e-mail sem problemas. Ele também suporta a análise de arquivos MSG do Outlook e fornece seu conteúdo em objetos Java. Faça o download do JAR da API ou apenas adicione a seguinte configuração pom.xml em um aplicativo Java baseado em Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-email</artifactId>
    <version>22.2</version>
    <classifier>jdk16</classifier>
</dependency>

Analisar e ler um arquivo MSG do Outlook usando Java

Podemos analisar e ler um arquivo MSG do Outlook seguindo as etapas abaixo:

  1. Carregue um arquivo MSG usando o método MapiMessage.load().
  2. Leia propriedades como SenderName, Assunto, Corpo, Destinatários do MSG carregado.

O exemplo de código a seguir mostra como ler um arquivo MSG do Outlook usando Java.

// Este exemplo de código demonstra como ler o arquivo MSG.
// Carregar um arquivo MSG do disco
MapiMessage outlookMessageFile = MapiMessage.load("D:\\Files\\Email\\message.msg");

// Exibir nome do remetente
System.out.println("Sender Name : " + outlookMessageFile.getSenderName());

// Exibir assunto
System.out.println("Subject : " + outlookMessageFile.getSubject());

// Corpo de exibição
System.out.println("Body : " + outlookMessageFile.getBody());

// Exibir informações do destinatário
System.out.println("Recipients : \n");

// Faça um loop pela coleção de destinatários associada ao objeto MapiMessage
for (int i = 0; i < outlookMessageFile.getRecipients().size(); i++) {
  
  // Definir uma referência ao objeto MapiRecipient
  MapiRecipient rcp = (MapiRecipient) outlookMessageFile.getRecipients().get_Item(i);
  
  // Exibir endereço de e-mail do destinatário
  System.out.println("Email : " + rcp.getEmailAddress());
  
  // Exibir nome do destinatário
  System.out.println("Name : " + rcp.getDisplayName());
  
  // Exibir tipo de destinatário
  System.out.println("Recipient Type : " + rcp.getRecipientType());
}
Analise e leia um arquivo MSG do Outlook usando Java.

Analise e leia um arquivo MSG do Outlook usando Java.

Obter anexos do arquivo MSG usando Java

Também podemos salvar os anexos de um arquivo MSG do Outlook seguindo as etapas abaixo:

  1. Carregue um arquivo MSG usando o método MapiMessage.load().
  2. Percorra a coleção de anexos associada ao objeto MapiMessage.
  3. Salve cada anexo em disco usando o método save().

O exemplo de código a seguir mostra como salvar anexos de um arquivo MSG do Outlook usando Java.

// Este exemplo de código demonstra como salvar anexos do arquivo MSG.
// Carregar um arquivo MSG do disco
MapiMessage outlookMessageFile = MapiMessage.load("D:\\Files\\Email\\WithEmbeddedMsg.msg");

// Percorra a coleção de anexos associada ao objeto MapiMessage
for (int i = 0; i < outlookMessageFile.getAttachments().size(); i++) {
  
  // Definir uma referência ao objeto MapiAttachment
  MapiAttachment outlookMessageAttachment = (MapiAttachment) outlookMessageFile.getAttachments().get_Item(i);
  
  // Exibir tipo de anexo
  System.out.println("Att Type : " + outlookMessageAttachment.getMimeTag());
  
  // Exibir nome do arquivo anexado
  System.out.println("File Name : " + outlookMessageAttachment.getLongFileName());
  
  // Salvar anexo no disco
  outlookMessageAttachment.save("D:\\Files\\Email\\" + outlookMessageAttachment.getDisplayName());
}
Obtenha anexos do arquivo MSG usando Java.

Obtenha anexos do arquivo MSG usando Java.

Ler mensagem incorporada do anexo

Também podemos ler as mensagens de email incorporadas no anexo MSG do Outlook seguindo as etapas abaixo:

  1. Carregue um arquivo MSG usando o método MapiMessage.load().
  2. Obtenha a mensagem anexada como um objeto MapiMessage.
  3. Mostrar propriedades da mensagem.

O exemplo de código a seguir mostra como ler uma mensagem inserida como um anexo usando Java.

// Este exemplo de código demonstra como ler uma mensagem incorporada anexada no MSG.
// Carregar um arquivo MSG
MapiMessage mapi = MapiMessage.load(dataDir + "EmbededMessageAsAttachment.msg");

// Mostrar o total de anexos
System.out.println("Total attachments : " + mapi.getAttachments().size());

// Ler anexo como MapiMessage
MapiMessage emb = mapi.getAttachments().get_Item(0).getObjectData().toMapiMessage();

// Exibir nome do remetente
System.out.println("Sender Name : " + emb.getSenderName());

// Exibir assunto
System.out.println("Subject : " + emb.getSubject());

// Corpo de exibição
System.out.println("Body : " + emb.getBody());

// Exibir informações do destinatário
System.out.println("Recipients :");

// Faça um loop pela coleção de destinatários associada ao objeto MapiMessage
for (int i = 0; i < emb.getRecipients().size(); i++) {
  
  // Definir uma referência ao objeto MapiRecipient
  MapiRecipient rcp = (MapiRecipient) emb.getRecipients().get_Item(i);
  
  // Exibir endereço de e-mail do destinatário
  System.out.println("\t Email : " + rcp.getEmailAddress());
  
  // Exibir nome do destinatário
  System.out.println("\t Name : " + rcp.getDisplayName());
  
  // Exibir tipo de destinatário
  System.out.println("\t Recipient Type : " + rcp.getRecipientType());
}

Obtenha uma licença gratuita

Experimente a API sem limitações de avaliação solicitando uma licença temporária gratuita.

Conclusão

Neste artigo, aprendemos como ler o conteúdo do arquivo MSG do Outlook programaticamente usando Java. Além disso, vimos como ler e extrair anexos de um arquivo MSG. Além disso, você pode aprender mais sobre Aspose.Email for Java API usando a documentação. Em caso de qualquer ambiguidade, não hesite em contactar-nos no fórum.

Veja também