Lire les fichiers MS Outlook PST en Java

PST (Personal Storage Table) est un format de fichier bien connu qui est utilisé à des fins de stockage par différents programmes Microsoft tels que MS Outlook, Exchange et Windows Messaging. Les fichiers PST peuvent stocker des messages, des contacts et des informations sur d’autres éléments tels que des calendriers, des événements, etc. Dans certains cas, vous devrez peut-être analyser un fichier PST et en extraire des données par programmation. Pour y parvenir, cet article montre comment lire les fichiers MS Outlook PST à l’aide de Java. À l’aide d’exemples de code, vous apprendrez à extraire les informations des dossiers, à lire les e-mails et à récupérer les contacts à partir d’un fichier PST.

API Java pour lire les fichiers Outlook PST

Aspose.Email for Java est une API de traitement des e-mails populaire et riche en fonctionnalités pour la création et l’envoi d’e-mails. De plus, il vous permet de travailler avec des clients de messagerie et des formats de fichiers de stockage populaires. Dans cet article, nous utiliserons Aspose.Email for Java pour lire les messages et autres informations des fichiers PST. Vous pouvez soit télécharger l’API ou l’installer à l’aide des configurations Maven suivantes.

Repository:

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

Dependency:

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

Lire un fichier Outlook PST en Java

Voici les étapes pour lire un fichier PST et extraire ses informations.

L’exemple de code suivant montre comment lire un fichier PST et récupérer les informations des dossiers.

// Charger le fichier Outlook PST
PersonalStorage pst = PersonalStorage.fromFile("PersonalStorage.pst");

// Obtenir les informations des dossiers
FolderInfoCollection folderInfoCollection = pst.getRootFolder().getSubFolders();

// Parcourez chaque dossier pour afficher les informations
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("-----------------------------------");
}

Lire des e-mails à partir d’un fichier PST en Java

Voici les étapes pour lire les messages électroniques à partir d’un fichier PST en Java.

L’exemple de code suivant montre comment extraire des messages d’un fichier PST en Java.

// Charger le fichier Outlook PST
PersonalStorage pst = PersonalStorage.fromFile(path);

// Obtenir le format d'affichage du fichier PST
System.out.println("Display Format: " + pst.getFormat());

// Obtenir les informations sur les dossiers et les messages
FolderInfo folderInfo = pst.getRootFolder();

// Appelez la méthode récursive pour extraire les fichiers msg de chaque dossier
extractMsgFiles(folderInfo, pst);

// Il s'agit d'une méthode récursive pour afficher le contenu d'un dossier
private static void extractMsgFiles(FolderInfo folderInfo, PersonalStorage pst) {
    // afficher le nom du dossier
    System.out.println("Folder: " + folderInfo.getDisplayName());
    System.out.println("==================================");
    
    // Parcourez tous les messages de ce dossier
    MessageInfoCollection messageInfoCollection = folderInfo.getContents();
    
    for (MessageInfo messageInfo : messageInfoCollection) {
        System.out.println("Saving message {0} ...." + messageInfo.getSubject());
        
        // Obtenir le message dans l'instance MapiMessage
        MapiMessage message = pst.extractMessage(messageInfo);
        
        // Enregistrez ce message sur le disque au format msg
        message.save(message.getSubject().replace(":", " ") + ".msg");
        
        // Enregistrez ce message pour le diffuser au format msg
        ByteArrayOutputStream messageStream = new ByteArrayOutputStream();
        message.save(messageStream);
    }

    // Appelez cette méthode de manière récursive pour chaque sous-dossier
    if (folderInfo.hasSubFolders() == true) {
        for (FolderInfo subfolderInfo : folderInfo.getSubFolders()) {
            extractMsgFiles(subfolderInfo, pst);
        }
    }
}

Extraire les contacts d’un fichier PST en Java

Dans certains cas, vous devrez peut-être extraire les informations des contacts stockées dans un fichier PST. Les étapes suivantes montrent comment accéder aux contacts dans un fichier PST en Java.

L’exemple de code suivant montre comment extraire des contacts d’un fichier PST en Java.

// Charger le fichier Outlook PST
PersonalStorage pst = PersonalStorage.fromFile("SampleContacts.pst");

// Obtenir le dossier Contacts
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");

// Parcourez tous les contacts de ce dossier
MessageInfoCollection messageInfoCollection = folderInfo.getContents();

for (int i = 0; i < messageInfoCollection.size(); i++) {
	MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
	
  //  Obtenir les coordonnées
	MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
	
  //  Afficher certains contenus à l'écran
	System.out.println("Name: " + contact.getNameInfo().getDisplayName() + "\n");
	
  //  Enregistrer sur disque au format 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");
	}
}

Obtenez une licence API gratuite

Vous pouvez essayer gratuitement Aspose.Email for Java en obtenant une licence temporaire.

Conclusion

Dans cet article, vous avez appris à lire des fichiers PST par programmation en Java. De plus, vous avez vu comment extraire des informations de dossier, récupérer des e-mails et récupérer des contacts à partir d’un fichier PST en Java. De plus, vous pouvez en savoir plus sur Aspose.Email for Java en utilisant documentation. De plus, au cas où vous auriez des questions ou des requêtes, n’hésitez pas à nous le faire savoir via notre forum.

Voir également