PST (Personal Storage Table) é um formato de arquivo bem conhecido que é usado para fins de armazenamento por diferentes programas da Microsoft, como MS Outlook, Exchange e Windows Messaging. Os arquivos PST podem armazenar mensagens, contatos e informações sobre outros itens, como calendários, eventos etc. Em alguns casos, pode ser necessário analisar um arquivo PST e extrair dados dele programaticamente. Para conseguir isso, este artigo mostra como ler arquivos PST do MS Outlook usando Java. Com a ajuda de exemplos de código, você aprenderá como extrair informações de pastas, ler e-mails e buscar contatos de um arquivo PST.
- API Java para ler arquivos PST
- Ler um arquivo PST do Outlook
- Ler e-mails de um arquivo PST
- Extrair contatos de um arquivo PST
API Java para ler arquivos PST do Outlook
Aspose.Email for Java é uma API de processamento de e-mail popular e rica em recursos para criar e enviar e-mails. Além disso, permite trabalhar com clientes de e-mail populares e formatos de arquivo de armazenamento. Neste artigo, usaremos o Aspose.Email para Java para ler mensagens e outras informações de arquivos PST. Você pode baixar a API ou instalá-la usando as seguintes configurações do Maven.
Repositório:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
Dependência:
<groupId>com.aspose</groupId>
<artifactId>aspose-email</artifactId>
<version>22.3</version>
<classifier>jdk16</classifier>
</dependency>
Ler um arquivo PST do Outlook em Java
A seguir estão as etapas para ler um arquivo PST e extrair suas informações.
- Carregue o arquivo PST usando o método PersonalStorage.fromFile().
- Obtenha a coleção de pastas no PST usando o método PersonalStorage.getRootFolders().getSubFolders().
- Recupere as informações das pastas, como nome, número de itens, etc.
O exemplo de código a seguir mostra como ler um arquivo PST e buscar as informações das pastas.
// Carregar o arquivo PST do Outlook
PersonalStorage pst = PersonalStorage.fromFile("PersonalStorage.pst");
// Obtenha as informações das pastas
FolderInfoCollection folderInfoCollection = pst.getRootFolder().getSubFolders();
// Navegue por cada pasta para exibir informações
for (int i = 0; i < folderInfoCollection.size(); i++) {
FolderInfo folderInfo = (FolderInfo) folderInfoCollection.get_Item(i);
System.out.println("FolderId: " + folderInfo.getEntryIdString());
System.out.println("Folder: " + folderInfo.getDisplayName());
System.out.println("Total items: " + folderInfo.getContentCount());
System.out.println("Total unread items: " + folderInfo.getContentUnreadCount());
System.out.println("-----------------------------------");
}
Ler e-mails de um arquivo PST em Java
A seguir estão as etapas para ler mensagens de email de um arquivo PST em Java.
- Carregue o arquivo PST usando o método PersonalStorage.fromFile().
- Acesse a pasta raiz usando o método PersonalStorage.getRootFolder().
- Obtenha a coleção de mensagens de cada subpasta usando o método FolderInfo.getContents().
- Percorra as mensagens na coleção e leia os campos de cada mensagem.
O exemplo de código a seguir mostra como extrair mensagens de um arquivo PST em Java.
// Carregar o arquivo PST do Outlook
PersonalStorage pst = PersonalStorage.fromFile(path);
// Obtenha o formato de exibição do arquivo PST
System.out.println("Display Format: " + pst.getFormat());
// Obtenha as informações de pastas e mensagens
FolderInfo folderInfo = pst.getRootFolder();
// Chame o método recursivo para extrair arquivos msg de cada pasta
extractMsgFiles(folderInfo, pst);
// Este é um método recursivo para exibir o conteúdo de uma pasta
private static void extractMsgFiles(FolderInfo folderInfo, PersonalStorage pst) {
// exibir o nome da pasta
System.out.println("Folder: " + folderInfo.getDisplayName());
System.out.println("==================================");
// Percorra todas as mensagens nesta pasta
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
for (MessageInfo messageInfo : messageInfoCollection) {
System.out.println("Saving message {0} ...." + messageInfo.getSubject());
// Obter a mensagem na instância MapiMessage
MapiMessage message = pst.extractMessage(messageInfo);
// Salve esta mensagem em disco no formato msg
message.save(message.getSubject().replace(":", " ") + ".msg");
// Salve esta mensagem para transmitir no formato msg
ByteArrayOutputStream messageStream = new ByteArrayOutputStream();
message.save(messageStream);
}
// Chame este método recursivamente para cada subpasta
if (folderInfo.hasSubFolders() == true) {
for (FolderInfo subfolderInfo : folderInfo.getSubFolders()) {
extractMsgFiles(subfolderInfo, pst);
}
}
}
Extrair contatos de um arquivo PST em Java
Em certos casos, pode ser necessário extrair as informações dos contatos armazenadas em um arquivo PST. As etapas a seguir mostram como acessar os contatos em um arquivo PST em Java.
- Carregue o arquivo PST usando o método PersonalStorage.fromFile().
- Obtenha a referência da pasta de contatos usando o método PersonalStorage.getRootFolder().getSubFolder(“Contacts”).
- Obtenha uma coleção de contatos usando o método FolderInfo.getContents().
- Percorra a coleção de contatos e leia cada contato ou salve-o.
O exemplo de código a seguir mostra como extrair contatos de um arquivo PST em Java.
// Carregar o arquivo PST do Outlook
PersonalStorage pst = PersonalStorage.fromFile("SampleContacts.pst");
// Obtenha a pasta de contatos
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");
// Percorra todos os contatos nesta pasta
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
for (int i = 0; i < messageInfoCollection.size(); i++) {
MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
// Obtenha as informações de contato
MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
// Exibir alguns conteúdos na tela
System.out.println("Name: " + contact.getNameInfo().getDisplayName() + "\n");
// Salvar em disco no formato MSG
if (contact.getNameInfo().getDisplayName() != null) {
MapiMessage message = pst.extractMessage(messageInfo); // Get rid of illegal characters that cannot be used as a file name
String messageName = message.getSubject().replace(":", " ").replace("\\", " ").replace("?", " ").replace("/", " ");
message.save(messageName + ".msg");
}
}
Obtenha uma licença de API gratuita
Você pode experimentar o Aspose.Email for Java gratuitamente obtendo uma licença temporária.
Conclusão
Neste artigo, você aprendeu a ler arquivos PST programaticamente em Java. Além disso, você viu como extrair informações de pastas, buscar e-mails e recuperar contatos de um arquivo PST em Java. Além disso, você pode explorar mais sobre o Aspose.Email para Java usando documentação. Além disso, caso você tenha alguma dúvida ou pergunta, sinta-se à vontade para nos informar através do nosso fórum.