Leer archivos PST de MS Outlook en Java

PST (Tabla de almacenamiento personal) es un formato de archivo muy conocido que se utiliza con fines de almacenamiento en diferentes programas de Microsoft, como MS Outlook, Exchange y Windows Messaging. Los archivos PST pueden almacenar mensajes, contactos e información sobre otros elementos, como calendarios, eventos, etc. En ciertos casos, es posible que deba analizar un archivo PST y extraer datos de él mediante programación. Para lograrlo, este artículo muestra cómo leer archivos PST de MS Outlook usando Java. Con la ayuda de ejemplos de código, aprenderá cómo extraer información de carpetas, leer correos electrónicos y obtener contactos de un archivo PST.

API de Java para leer archivos PST de Outlook

Aspose.Email for Java es una API de procesamiento de correo electrónico popular y rica en funciones para crear y enviar correos electrónicos. Además, le permite trabajar con clientes de correo electrónico populares y formatos de archivo de almacenamiento. En este artículo, usaremos Aspose.Email for Java para leer mensajes y otra información de archivos PST. Puede descargar la API o instalarla usando las siguientes configuraciones de Maven.

Repositorio:

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

Dependencia:

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

Leer un archivo PST de Outlook en Java

Los siguientes son los pasos para leer un archivo PST y extraer su información.

El siguiente ejemplo de código muestra cómo leer un archivo PST y obtener información de las carpetas.

// Cargue el archivo PST de Outlook
PersonalStorage pst = PersonalStorage.fromFile("PersonalStorage.pst");

// Obtener la información de las carpetas
FolderInfoCollection folderInfoCollection = pst.getRootFolder().getSubFolders();

// Navegar a través de cada carpeta para mostrar información
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("-----------------------------------");
}

Leer correos electrónicos de un archivo PST en Java

Los siguientes son los pasos para leer mensajes de correo electrónico desde un archivo PST en Java.

El siguiente ejemplo de código muestra cómo extraer mensajes de un archivo PST en Java.

// Cargue el archivo PST de Outlook
PersonalStorage pst = PersonalStorage.fromFile(path);

// Obtener el formato de visualización del archivo PST
System.out.println("Display Format: " + pst.getFormat());

// Obtener la información de carpetas y mensajes
FolderInfo folderInfo = pst.getRootFolder();

// Llame al método recursivo para extraer archivos msg de cada carpeta
extractMsgFiles(folderInfo, pst);

// Este es un método recursivo para mostrar el contenido de una carpeta.
private static void extractMsgFiles(FolderInfo folderInfo, PersonalStorage pst) {
    // mostrar el nombre de la carpeta
    System.out.println("Folder: " + folderInfo.getDisplayName());
    System.out.println("==================================");
    
    // Recorre todos los mensajes de esta carpeta
    MessageInfoCollection messageInfoCollection = folderInfo.getContents();
    
    for (MessageInfo messageInfo : messageInfoCollection) {
        System.out.println("Saving message {0} ...." + messageInfo.getSubject());
        
        // Obtenga el mensaje en la instancia de MapiMessage
        MapiMessage message = pst.extractMessage(messageInfo);
        
        // Guarde este mensaje en el disco en formato msg
        message.save(message.getSubject().replace(":", " ") + ".msg");
        
        // Guarde este mensaje para transmitir en formato de mensaje
        ByteArrayOutputStream messageStream = new ByteArrayOutputStream();
        message.save(messageStream);
    }

    // Llame a este método recursivamente para cada subcarpeta
    if (folderInfo.hasSubFolders() == true) {
        for (FolderInfo subfolderInfo : folderInfo.getSubFolders()) {
            extractMsgFiles(subfolderInfo, pst);
        }
    }
}

Extraer contactos de un archivo PST en Java

En ciertos casos, es posible que deba extraer la información de los contactos almacenada en un archivo PST. Los siguientes pasos muestran cómo acceder a los contactos en un archivo PST en Java.

El siguiente ejemplo de código muestra cómo extraer contactos de un archivo PST en Java.

// Cargue el archivo PST de Outlook
PersonalStorage pst = PersonalStorage.fromFile("SampleContacts.pst");

// Obtener la carpeta de Contactos
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");

// Recorra todos los contactos en esta carpeta
MessageInfoCollection messageInfoCollection = folderInfo.getContents();

for (int i = 0; i < messageInfoCollection.size(); i++) {
	MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
	
  //  Obtenga la información de contacto
	MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
	
  //  Mostrar algunos contenidos en pantalla
	System.out.println("Name: " + contact.getNameInfo().getDisplayName() + "\n");
	
  //  Guardar en disco en 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");
	}
}

Obtenga una licencia de API gratuita

Puede probar Aspose.Email for Java de forma gratuita obteniendo una licencia temporal.

Conclusión

En este artículo, ha aprendido a leer archivos PST mediante programación en Java. Además, ha visto cómo extraer información de carpetas, buscar correos electrónicos y recuperar contactos de un archivo PST en Java. Además, puede explorar más sobre Aspose.Email for Java usando documentación. Además, en caso de que tenga alguna pregunta o consulta, no dude en hacérnoslo saber a través de nuestro foro.

Ver también