Leggi i file PST di MS Outlook in Java

PST (Personal Storage Table) è un noto formato di file utilizzato per scopi di archiviazione da diversi programmi Microsoft come MS Outlook, Exchange e Windows Messaging. I file PST possono archiviare messaggi, contatti e informazioni su altri elementi come calendari, eventi e così via. In alcuni casi, potrebbe essere necessario analizzare un file PST ed estrarre i dati da esso a livello di codice. Per raggiungere questo obiettivo, questo articolo mostra come leggere i file PST di MS Outlook utilizzando Java. Con l’aiuto di esempi di codice, imparerai come estrarre le informazioni delle cartelle, leggere le email e recuperare i contatti da un file PST.

API Java per leggere i file PST di Outlook

Aspose.Email per Java è un’API di elaborazione e-mail popolare e ricca di funzionalità per la creazione e l’invio di e-mail. Inoltre, ti consente di lavorare con i più diffusi client di posta elettronica e formati di file di archiviazione. In questo articolo utilizzeremo Aspose.Email per Java per leggere messaggi e altre informazioni dai file PST. Puoi scaricare l’API o installarla utilizzando le seguenti configurazioni Maven.

Archivio:

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

Dipendenza:

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

Leggi un file PST di Outlook in Java

Di seguito sono riportati i passaggi per leggere un file PST ed estrarne le informazioni.

Nell’esempio di codice seguente viene illustrato come leggere un file PST e recuperare le informazioni delle cartelle.

// Carica il file PST di Outlook
PersonalStorage pst = PersonalStorage.fromFile("PersonalStorage.pst");

// Ottieni le informazioni sulle cartelle
FolderInfoCollection folderInfoCollection = pst.getRootFolder().getSubFolders();

// Sfoglia ogni cartella per visualizzare le informazioni
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("-----------------------------------");
}

Leggi le email da un file PST in Java

Di seguito sono riportati i passaggi per leggere i messaggi di posta elettronica da un file PST in Java.

L’esempio di codice seguente mostra come estrarre i messaggi da un file PST in Java.

// Carica il file PST di Outlook
PersonalStorage pst = PersonalStorage.fromFile(path);

// Ottieni il formato di visualizzazione del file PST
System.out.println("Display Format: " + pst.getFormat());

// Ottieni le informazioni sulle cartelle e sui messaggi
FolderInfo folderInfo = pst.getRootFolder();

// Chiama il metodo ricorsivo per estrarre i file msg da ciascuna cartella
extractMsgFiles(folderInfo, pst);

// Questo è un metodo ricorsivo per visualizzare il contenuto di una cartella
private static void extractMsgFiles(FolderInfo folderInfo, PersonalStorage pst) {
    // visualizzare il nome della cartella
    System.out.println("Folder: " + folderInfo.getDisplayName());
    System.out.println("==================================");
    
    // Scorri tutti i messaggi in questa cartella
    MessageInfoCollection messageInfoCollection = folderInfo.getContents();
    
    for (MessageInfo messageInfo : messageInfoCollection) {
        System.out.println("Saving message {0} ...." + messageInfo.getSubject());
        
        // Ottieni il messaggio nell'istanza MapiMessage
        MapiMessage message = pst.extractMessage(messageInfo);
        
        // Salva questo messaggio su disco in formato msg
        message.save(message.getSubject().replace(":", " ") + ".msg");
        
        // Salva questo messaggio per lo streaming in formato msg
        ByteArrayOutputStream messageStream = new ByteArrayOutputStream();
        message.save(messageStream);
    }

    // Chiama questo metodo in modo ricorsivo per ogni sottocartella
    if (folderInfo.hasSubFolders() == true) {
        for (FolderInfo subfolderInfo : folderInfo.getSubFolders()) {
            extractMsgFiles(subfolderInfo, pst);
        }
    }
}

Estrai i contatti da un file PST in Java

In alcuni casi, potrebbe essere necessario estrarre le informazioni sui contatti archiviate in un file PST. I seguenti passaggi mostrano come accedere ai contatti in un file PST in Java.

L’esempio di codice seguente mostra come estrarre i contatti da un file PST in Java.

// Carica il file PST di Outlook
PersonalStorage pst = PersonalStorage.fromFile("SampleContacts.pst");

// Ottieni la cartella Contatti
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");

// Scorri tutti i contatti in questa cartella
MessageInfoCollection messageInfoCollection = folderInfo.getContents();

for (int i = 0; i < messageInfoCollection.size(); i++) {
	MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
	
  //  Ottieni le informazioni di contatto
	MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
	
  //  Visualizza alcuni contenuti sullo schermo
	System.out.println("Name: " + contact.getNameInfo().getDisplayName() + "\n");
	
  //  Salva su disco in 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");
	}
}

Ottieni una licenza API gratuita

Puoi provare Aspose.Email per Java gratuitamente ottenendo una licenza temporanea.

Conclusione

In questo articolo, hai imparato a leggere i file PST a livello di codice in Java. Inoltre, hai visto come estrarre informazioni sulla cartella, recuperare e-mail e recuperare contatti da un file PST in Java. Inoltre, puoi esplorare di più su Aspose.Email per Java utilizzando la documentazione. Inoltre, in caso di domande o domande, non esitare a farcelo sapere tramite il nostro forum.

Guarda anche