PST (Personal Storage Table) – широко известный формат файлов, который используется для хранения различными программами Microsoft, такими как MS Outlook, Exchange и Windows Messaging. Файлы PST могут хранить сообщения, контакты и информацию о других элементах, таких как календари, события и т. д. В некоторых случаях вам может потребоваться проанализировать файл PST и извлечь из него данные программным путем. Для этого в этой статье показано, как читать файлы MS Outlook PST с помощью Java. С помощью примеров кода вы узнаете, как извлекать информацию из папок, читать электронные письма и извлекать контакты из файла PST.
- Java API для чтения файлов PST
- Чтение файла Outlook PST
- Чтение писем из файла PST
- Извлечь контакты из файла PST
Java API для чтения файлов Outlook PST
Aspose.Email для Java — это популярный и многофункциональный API обработки электронной почты для создания и отправки электронных писем. Кроме того, он позволяет работать с популярными почтовыми клиентами и форматами файлов хранилища. В этой статье мы будем использовать Aspose.Email для Java для чтения сообщений и другой информации из файлов PST. Вы можете либо скачать API, либо установить его, используя следующие конфигурации Maven.
Репозиторий:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
Зависимость:
<groupId>com.aspose</groupId>
<artifactId>aspose-email</artifactId>
<version>22.3</version>
<classifier>jdk16</classifier>
</dependency>
Чтение файла Outlook PST в Java
Ниже приведены шаги для чтения файла PST и извлечения его информации.
- Загрузите файл PST с помощью метода PersonalStorage.fromFile().
- Получите коллекцию папок в PST, используя метод PersonalStorage.getRootFolders().getSubFolders().
- Получить информацию о папках, такую как имя, количество элементов и т. д.
В следующем примере кода показано, как прочитать файл PST и получить информацию о папках.
// Загрузите файл Outlook PST
PersonalStorage pst = PersonalStorage.fromFile("PersonalStorage.pst");
// Получить информацию о папках
FolderInfoCollection folderInfoCollection = pst.getRootFolder().getSubFolders();
// Просмотрите каждую папку для отображения информации
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("-----------------------------------");
}
Чтение электронных писем из файла PST в Java
Ниже приведены шаги для чтения сообщений электронной почты из файла PST в Java.
- Загрузите файл PST, используя метод PersonalStorage.fromFile().
- Получите доступ к корневой папке с помощью метода PersonalStorage.getRootFolder().
- Получить коллекцию сообщений из каждой подпапки с помощью метода FolderInfo.getContents().
- Прокрутите сообщения в коллекции и прочитайте поля каждого сообщения.
В следующем примере кода показано, как извлекать сообщения из PST-файла в Java.
// Загрузите файл Outlook PST
PersonalStorage pst = PersonalStorage.fromFile(path);
// Получить формат отображения файла PST
System.out.println("Display Format: " + pst.getFormat());
// Получить информацию о папках и сообщениях
FolderInfo folderInfo = pst.getRootFolder();
// Вызов рекурсивного метода для извлечения файлов msg из каждой папки
extractMsgFiles(folderInfo, pst);
// Это рекурсивный метод отображения содержимого папки.
private static void extractMsgFiles(FolderInfo folderInfo, PersonalStorage pst) {
// показать имя папки
System.out.println("Folder: " + folderInfo.getDisplayName());
System.out.println("==================================");
// Перебрать все сообщения в этой папке
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
for (MessageInfo messageInfo : messageInfoCollection) {
System.out.println("Saving message {0} ...." + messageInfo.getSubject());
// Получить сообщение в экземпляре MapiMessage
MapiMessage message = pst.extractMessage(messageInfo);
// Сохраните это сообщение на диск в формате msg
message.save(message.getSubject().replace(":", " ") + ".msg");
// Сохранить это сообщение в поток в формате msg
ByteArrayOutputStream messageStream = new ByteArrayOutputStream();
message.save(messageStream);
}
// Вызовите этот метод рекурсивно для каждой подпапки
if (folderInfo.hasSubFolders() == true) {
for (FolderInfo subfolderInfo : folderInfo.getSubFolders()) {
extractMsgFiles(subfolderInfo, pst);
}
}
}
Извлечение контактов из файла PST в Java
В некоторых случаях вам может потребоваться извлечь информацию о контактах, хранящуюся в файле PST. Следующие шаги показывают, как получить доступ к контактам в файле PST в Java.
- Загрузите файл PST, используя метод PersonalStorage.fromFile().
- Получите ссылку на папку контактов, используя метод PersonalStorage.getRootFolder().getSubFolder(“Contacts”).
- Получить коллекцию контактов с помощью метода FolderInfo.getContents().
- Прокрутите коллекцию контактов и прочитайте каждый контакт или сохраните его.
В следующем примере кода показано, как извлечь контакты из файла PST в Java.
// Загрузите файл Outlook PST
PersonalStorage pst = PersonalStorage.fromFile("SampleContacts.pst");
// Получить папку Контакты
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");
// Перебрать все контакты в этой папке
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
for (int i = 0; i < messageInfoCollection.size(); i++) {
MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
// Получить контактную информацию
MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
// Отображение некоторого содержимого на экране
System.out.println("Name: " + contact.getNameInfo().getDisplayName() + "\n");
// Сохранить на диск в формате 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");
}
}
Получите бесплатную лицензию API
Вы можете бесплатно попробовать Aspose.Email для Java, получив временную лицензию.
Вывод
В этой статье вы узнали, как программно читать файлы PST на Java. Кроме того, вы видели, как извлекать информацию о папках, получать электронные письма и извлекать контакты из файла PST в Java. Кроме того, вы можете узнать больше об Aspose.Email для Java, используя документацию. Кроме того, если у вас возникнут какие-либо вопросы или вопросы, сообщите нам об этом через наш форум.