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
- Leggi un file PST di Outlook
- Leggi le email da un file PST
- Estrai 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.
- Carica il file PST utilizzando il metodo PersonalStorage.fromFile().
- Ottieni la raccolta di cartelle in PST utilizzando il metodo PersonalStorage.getRootFolders().getSubFolders().
- Recupera le informazioni delle cartelle come nome, numero di elementi, ecc.
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.
- Carica il file PST usando il metodo PersonalStorage.fromFile().
- Accedi alla cartella principale utilizzando il metodo PersonalStorage.getRootFolder().
- Ottieni la raccolta di messaggi da ogni sottocartella utilizzando il metodo FolderInfo.getContents().
- Scorri i messaggi nella raccolta e leggi i campi di ogni messaggio.
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.
- Carica il file PST utilizzando il metodo PersonalStorage.fromFile().
- Ottieni il riferimento della cartella dei contatti usando il metodo PersonalStorage.getRootFolder().getSubFolder(“Contacts”).
- Ottieni la raccolta di contatti utilizzando il metodo FolderInfo.getContents().
- Scorri la raccolta dei contatti e leggi ogni contatto o salvalo.
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.