Czytaj pliki PST MS Outlook w Javie

PST (Personal Storage Table) to dobrze znany format plików używany do przechowywania danych przez różne programy firmy Microsoft, takie jak MS Outlook, Exchange i Windows Messaging. Pliki PST mogą przechowywać wiadomości, kontakty i informacje o innych elementach, takich jak kalendarze, wydarzenia itp. W niektórych przypadkach może być konieczne przeanalizowanie pliku PST i programowe wyodrębnienie z niego danych. Aby to osiągnąć, w tym artykule pokazano, jak czytać pliki PST programu Outlook w Javie. Za pomocą przykładowych kodów nauczysz się wydobywać informacje z folderów, czytać e-maile i pobierać kontakty z pliku PST.

Java API do przetwarzania pliku PST programu Outlook — bezpłatne pobieranie

Aspose.Email for Java to popularny i bogaty w funkcje interfejs API do przetwarzania wiadomości e-mail do tworzenia i wysyłania wiadomości e-mail. Ponadto umożliwia pracę z popularnymi klientami poczty e-mail i formatami plików do przechowywania. W tym artykule użyjemy Aspose.Email for Java do odczytywania wiadomości i innych informacji z plików PST. Możesz pobrać interfejs API lub zainstalować go przy użyciu następujących konfiguracji Mavena.

Magazyn:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>

Zależność:

    <groupId>com.aspose</groupId>
    <artifactId>aspose-email</artifactId>
    <version>22.3</version>
    <classifier>jdk16</classifier>
</dependency>

Przeczytaj plik PST programu Outlook w Javie

Poniżej przedstawiono kroki, aby odczytać plik PST i wyodrębnić jego informacje w Javie.

Poniższy przykładowy kod pokazuje, jak odczytać plik PST i pobrać informacje o folderach w Javie.

// Załaduj plik PST programu Outlook
PersonalStorage pst = PersonalStorage.fromFile("PersonalStorage.pst");

// Pobierz informacje o folderach
FolderInfoCollection folderInfoCollection = pst.getRootFolder().getSubFolders();

// Przeglądaj każdy folder, aby wyświetlić informacje
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 Odczyt wiadomości e-mail z pliku PST

Poniżej przedstawiono kroki, aby odczytać wiadomości e-mail z pliku PST w Javie.

Poniższy przykładowy kod pokazuje, jak wyodrębnić wiadomości z pliku PST w Javie.

// Załaduj plik PST programu Outlook
PersonalStorage pst = PersonalStorage.fromFile(path);

// Uzyskaj format wyświetlania pliku PST
System.out.println("Display Format: " + pst.getFormat());

// Pobierz informacje o folderach i wiadomościach
FolderInfo folderInfo = pst.getRootFolder();

// Wywołaj metodę rekurencyjną, aby wyodrębnić pliki msg z każdego folderu
extractMsgFiles(folderInfo, pst);

// Jest to rekurencyjna metoda wyświetlania zawartości folderu
private static void extractMsgFiles(FolderInfo folderInfo, PersonalStorage pst) {
    // wyświetlić nazwę folderu
    System.out.println("Folder: " + folderInfo.getDisplayName());
    System.out.println("==================================");
    
    // Przejrzyj w pętli wszystkie wiadomości w tym folderze
    MessageInfoCollection messageInfoCollection = folderInfo.getContents();
    
   for (MessageInfo messageInfo : messageInfoCollection) {
        System.out.println("Saving message {0} ...." + messageInfo.getSubject());
        
        // Pobierz wiadomość w instancji MapiMessage
        MapiMessage message = pst.extractMessage(messageInfo);
        
        // Zapisz tę wiadomość na dysku w formacie msg
        message.save(message.getSubject().replace(":", " ") + ".msg");
        
        // Zapisz tę wiadomość do strumienia w formacie msg
        ByteArrayOutputStream messageStream = new ByteArrayOutputStream();
        message.save(messageStream);
    }

    // Wywołaj tę metodę rekurencyjnie dla każdego podfolderu
    if (folderInfo.hasSubFolders() == true) {
       for (FolderInfo subfolderInfo : folderInfo.getSubFolders()) {
            extractMsgFiles(subfolderInfo, pst);
        }
    }
}

Czytaj kontakty z pliku PST w Javie

W niektórych przypadkach może być konieczne wyodrębnienie informacji o kontaktach przechowywanych w pliku PST. Poniższe kroki pokazują, jak uzyskać dostęp do kontaktów w pliku PST w Javie.

Poniższy przykładowy kod pokazuje, jak wyodrębnić kontakty z pliku PST w Javie.

// Załaduj plik PST programu Outlook
PersonalStorage pst = PersonalStorage.fromFile("SampleContacts.pst");

// Pobierz folder Kontakty
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");

// Przejrzyj wszystkie kontakty w tym folderze
MessageInfoCollection messageInfoCollection = folderInfo.getContents();

for (int i = 0; i < messageInfoCollection.size(); i++) {
	MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
	
  //  Uzyskaj informacje kontaktowe
	MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
	
  //  Wyświetl niektóre treści na ekranie
	System.out.println("Name: " + contact.getNameInfo().getDisplayName() + "\n");
	
  //  Zapisz na dysku w formacie 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 do odczytu pliku PST programu Outlook — uzyskaj bezpłatną licencję

Możesz wypróbować Aspose.Email for Java za darmo, uzyskując tymczasową licencję.

Wniosek

W tym artykule nauczyłeś się programowo odczytywać pliki PST w Javie. Ponadto widziałeś, jak wyodrębniać informacje o folderach, pobierać wiadomości e-mail i pobierać kontakty z pliku PST w Javie. Ponadto możesz dowiedzieć się więcej o Aspose.Email for Java, korzystając z dokumentacji. Ponadto, jeśli masz jakieś pytania lub wątpliwości, daj nam znać za pośrednictwem naszego forum.

Zobacz też