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
- Leer un archivo PST de Outlook
- Leer correos electrónicos desde un archivo PST
- Extraer 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.
- Cargue el archivo PST utilizando el método PersonalStorage.fromFile().
- Obtenga la colección de carpetas en PST usando el método PersonalStorage.getRootFolders().getSubFolders().
- Recuperar la información de las carpetas como nombre, número de elementos, etc.
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.
- Cargue el archivo PST utilizando el método PersonalStorage.fromFile().
- Acceda a la carpeta raíz mediante el método PersonalStorage.getRootFolder().
- Obtenga la recopilación de mensajes de cada subcarpeta utilizando el método FolderInfo.getContents().
- Recorra los mensajes de la colección y lea los campos de cada mensaje.
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.
- Cargue el archivo PST utilizando el método PersonalStorage.fromFile().
- Obtenga la referencia de la carpeta de contactos usando el método PersonalStorage.getRootFolder().getSubFolder(“Contacts”).
- Obtenga una colección de contactos usando el método FolderInfo.getContents().
- Recorra la colección de contactos y lea cada contacto o guárdelo.
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.