
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
- Analisar e ler um arquivo MSG do Outlook
- Obter anexos do arquivo MSG
- Ler mensagem incorporada do anexo
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:
- Carregue um arquivo MSG usando o método MapiMessage.load().
- 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.
Obter anexos do arquivo MSG usando Java
Também podemos salvar os anexos de um arquivo MSG do Outlook seguindo as etapas abaixo:
- Carregue um arquivo MSG usando o método MapiMessage.load().
- Percorra a coleção de anexos associada ao objeto MapiMessage.
- 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.
Ler mensagem incorporada do anexo
Também podemos ler as mensagens de email incorporadas no anexo MSG do Outlook seguindo as etapas abaixo:
- Carregue um arquivo MSG usando o método MapiMessage.load().
- Obtenha a mensagem anexada como um objeto MapiMessage.
- 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.