Читайте PST-файли MS Outlook у Java

PST (Personal Storage Table) – це добре відомий формат файлів, який використовується для зберігання різними програмами Microsoft, такими як MS Outlook, Exchange і Windows Messaging. Файли PST можуть зберігати повідомлення, контакти та інформацію про інші елементи, такі як календарі, події тощо. У деяких випадках може знадобитися проаналізувати файл PST і витягти з нього дані програмним шляхом. Щоб досягти цього, у цій статті показано, як читати файли Outlook PST у Java. За допомогою зразків коду ви дізнаєтеся, як витягувати інформацію з папок, читати електронні листи та отримувати контакти з файлу PST.

Java API для обробки файлу Outlook PST – Безкоштовне завантаження

Aspose.Email for Java — це популярний і багатофункціональний API обробки електронної пошти для створення та надсилання електронних листів. Крім того, він дозволяє працювати з популярними поштовими клієнтами та форматами зберігання файлів. У цій статті ми будемо використовувати Aspose.Email for 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>

Прочитайте PST-файл Outlook у Java

Нижче наведено кроки для читання файлу PST і витягування його інформації в Java.

У наведеному нижче прикладі коду показано, як читати файл PST і отримувати інформацію про папки в Java.

// Завантажте файл 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("-----------------------------------");
}

Java читає електронні листи з PST

Нижче наведено кроки для читання повідомлень електронної пошти з файлу 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");
        
        // Збережіть це повідомлення для потокової передачі у форматі повідомлення
        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 у 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");
	}
}

Java API для читання файлу Outlook PST – отримайте безкоштовну ліцензію

Ви можете безкоштовно спробувати Aspose.Email for Java, отримавши тимчасову ліцензію.

Висновок

У цій статті ви дізналися, як програмно читати файли PST у Java. Крім того, ви бачили, як видобувати інформацію про папку, отримувати електронні листи та отримувати контакти з файлу PST у Java. Крім того, ви можете дізнатися більше про Aspose.Email for Java за допомогою документації. Крім того, якщо у вас виникнуть запитання чи запити, не соромтеся повідомити нас через наш форум.

Дивись також