Přečtěte si soubory MS Outlook PST v Javě

PST (Personal Storage Table) je dobře známý formát souborů, který pro účely ukládání používají různé programy společnosti Microsoft, jako je MS Outlook, Exchange a Windows Messaging. Soubory PST mohou ukládat zprávy, kontakty a informace o dalších položkách, jako jsou kalendáře, události atd. V určitých případech může být nutné soubor PST analyzovat a extrahovat z něj data programově. Chcete-li toho dosáhnout, tento článek ukazuje, jak číst soubory Outlook PST v jazyce Java. Pomocí ukázek kódu se naučíte, jak extrahovat informace o složkách, číst e-maily a získávat kontakty ze souboru PST.

Java API pro zpracování souboru PST aplikace Outlook – ke stažení zdarma

Aspose.Email for Java je populární a na funkce bohaté rozhraní API pro zpracování e-mailů pro vytváření a odesílání e-mailů. Navíc umožňuje pracovat s oblíbenými e-mailovými klienty a formáty souborů úložiště. V tomto článku použijeme Aspose.Email pro Javu ke čtení zpráv a dalších informací ze souborů PST. Rozhraní API si můžete stáhnout nebo jej nainstalovat pomocí následujících konfigurací Maven.

úložiště:

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

Závislost:

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

Přečtěte si soubor PST aplikace Outlook v jazyce Java

Následují kroky ke čtení souboru PST a extrahování jeho informací v Javě.

Následující ukázka kódu ukazuje, jak číst soubor PST a načítat informace o složkách v jazyce Java.

// Načtěte soubor PST aplikace Outlook
PersonalStorage pst = PersonalStorage.fromFile("PersonalStorage.pst");

// Získejte informace o složkách
FolderInfoCollection folderInfoCollection = pst.getRootFolder().getSubFolders();

// Procházejte každou složku a zobrazte informace
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 Čtení e-mailů z PST

Následují kroky ke čtení e-mailových zpráv ze souboru PST v Javě.

Následující ukázka kódu ukazuje, jak extrahovat zprávy ze souboru PST v Javě.

// Načtěte soubor PST aplikace Outlook
PersonalStorage pst = PersonalStorage.fromFile(path);

// Získejte formát zobrazení souboru PST
System.out.println("Display Format: " + pst.getFormat());

// Získejte informace o složkách a zprávách
FolderInfo folderInfo = pst.getRootFolder();

// Chcete-li extrahovat soubory zpráv z každé složky, zavolejte rekurzivní metodu
extractMsgFiles(folderInfo, pst);

// Jedná se o rekurzivní metodu zobrazení obsahu složky
private static void extractMsgFiles(FolderInfo folderInfo, PersonalStorage pst) {
    // zobrazit název složky
    System.out.println("Folder: " + folderInfo.getDisplayName());
    System.out.println("==================================");
    
    // Projděte všechny zprávy v této složce
    MessageInfoCollection messageInfoCollection = folderInfo.getContents();
    
   for (MessageInfo messageInfo : messageInfoCollection) {
        System.out.println("Saving message {0} ...." + messageInfo.getSubject());
        
        // Získejte zprávu v instanci MapiMessage
        MapiMessage message = pst.extractMessage(messageInfo);
        
        // Uložte tuto zprávu na disk ve formátu msg
        message.save(message.getSubject().replace(":", " ") + ".msg");
        
        // Uložte tuto zprávu pro streamování ve formátu msg
        ByteArrayOutputStream messageStream = new ByteArrayOutputStream();
        message.save(messageStream);
    }

    // Tuto metodu volejte rekurzivně pro každou podsložku
    if (folderInfo.hasSubFolders() == true) {
       for (FolderInfo subfolderInfo : folderInfo.getSubFolders()) {
            extractMsgFiles(subfolderInfo, pst);
        }
    }
}

Přečtěte si kontakty z PST v Javě

V některých případech může být nutné extrahovat informace o kontaktech uložené v souboru PST. Následující kroky ukazují, jak získat přístup ke kontaktům v souboru PST v Javě.

Následující ukázka kódu ukazuje, jak extrahovat kontakty ze souboru PST v Javě.

// Načtěte soubor PST aplikace Outlook
PersonalStorage pst = PersonalStorage.fromFile("SampleContacts.pst");

// Získejte složku Kontakty
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");

// Procházejte všechny kontakty v této složce
MessageInfoCollection messageInfoCollection = folderInfo.getContents();

for (int i = 0; i < messageInfoCollection.size(); i++) {
	MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
	
  //  Získejte kontaktní informace
	MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
	
  //  Zobrazení určitého obsahu na obrazovce
	System.out.println("Name: " + contact.getNameInfo().getDisplayName() + "\n");
	
  //  Uložit na disk ve formátu 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 pro čtení souboru PST aplikace Outlook - Získejte bezplatnou licenci

Aspose.Email pro Javu můžete zdarma vyzkoušet získání dočasné licence.

Závěr

V tomto článku jste se naučili číst soubory PST programově v Javě. Dále jste viděli, jak extrahovat informace o složce, načítat e-maily a načítat kontakty ze souboru PST v Javě. Kromě toho můžete prozkoumat více o Aspose.Email pro Java pomocí dokumentace. Také v případě, že byste měli nějaké dotazy nebo dotazy, neváhejte nás kontaktovat prostřednictvím našeho fóra.

Viz také