Analizar archivos PST de Outlook en Python

PST (Tabla de almacenamiento personal) es un formato de archivo de almacenamiento que utilizan diferentes programas de Microsoft. Los archivos PST son capaces de guardar datos de mensajes, contactos, calendarios, eventos, etc. Es utilizado por softwares populares de Microsoft como MS Outlook, Exchange y Windows Messaging. 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 analizar archivos PST desde las aplicaciones de Python.

Biblioteca de Python para analizar archivos PST

Para analizar archivos PST, usaremos Aspose.Email for Python. Es una poderosa biblioteca de Python que le permite implementar clientes de correo electrónico ricos en funciones sin problemas. Además, le permite trabajar con correo electrónico popular y formatos de almacenamiento. Puede instalar la biblioteca desde PyPI usando el siguiente comando.

> pip install Aspose.Email-for-Python-via-NET

Analizar un archivo PST en Python

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

  • Cargue el archivo PST utilizando el método PersonalStorage.from\file().
  • Obtenga la colección de carpetas en PST usando el método PersonalStorage.root\folder.get_sub\folders().
  • Recuperar la información de las carpetas como nombre, número de elementos, etc.

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

from aspose.email import PersonalStorage

# Load PST file
personalStorage = PersonalStorage.from_file("Outlook.pst")

# Get folders' collection
folderInfoCollection = personalStorage.root_folder.get_sub_folders()

# Extract folders' information
for folderInfo in folderInfoCollection:
	print("Folder: " + folderInfo.display_name)
	print("Total Items: " + str(folderInfo.content_count))
	print("Total Unread Items: " + str(folderInfo.content_unread_count))

Extraer mensajes de un archivo PST en Python

Los mensajes son las principales entidades que los programas de Microsoft, como MS Outlook, almacenan en archivos PST. Así que veamos cómo extraer mensajes de un archivo PST en Python.

  • Cargue el archivo PST utilizando el método PersonalStorage.from\file().
  • Obtenga la referencia de la carpeta deseada en un objeto utilizando el método PersonalStorage.root\folder.get_sub\folder().
  • Obtenga la recopilación de mensajes utilizando el método get_contents().
  • 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 Python.

from aspose.email import PersonalStorage

# Load PST file
sourcePst = PersonalStorage.from_file("Outlook.pst")

# Select desired folder
sourceFolder = sourcePst.root_folder.get_sub_folder("Inbox")

# Get content in the folder
messageInfoCollection = sourceFolder.get_contents()

# Loop through messages in folder
for messageInfo in messageInfoCollection:
        print ("Subject: " + messageInfo.subject)
        print("To: " + messageInfo.display_to)

Extraer contactos de un archivo PST en Python

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 Python.

  • Cargue el archivo PST utilizando el método PersonalStorage.from\file().
  • Obtenga la referencia de la carpeta de contactos usando el método get_predefined\folder(StandardIpmFolder.CONTACTS).
  • Obtenga una colección de contactos usando el método get_contents().
  • Recorra la colección y lea cada contacto o guárdelo.

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

from aspose.email import PersonalStorage, StandardIpmFolder, ContactSaveFormat

# Load PST file
pst = PersonalStorage.from_file("SampleContacts_out.pst")

# Select contacts folder				
folderInfo = pst.get_predefined_folder(StandardIpmFolder.CONTACTS)

# Get contacts
contactCollection = folderInfo.get_contents()

# Loop through contacts collection
for  messageInfo in contactCollection:

    # Get the contact information
    mapi = pst.extract_message(messageInfo)

    contact = mapi.to_mapi_message_item()

    # Display some contents on screen
    print("Name: " + contact.name_info.display_name)

    # Save to disc in MSG Format
    if contact.name_info.display_name is not None:
        # Save contact
        contact.save("Contacts\\" + contact.name_info.display_name + "_out.msg")
        contact.save("Contacts\\" + contact.name_info.display_name + "_out.vcf", ContactSaveFormat.VCARD)

Obtenga una licencia de API gratuita

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

Conclusión

En este artículo, ha aprendido a analizar archivos PST en Python. Además, ha visto cómo extraer contactos y mensajes de un archivo PST mediante programación en Python. Además, puede explorar más sobre Aspose.Email usando documentación. Además, puedes compartir tus dudas o consultas en nuestro foro.

Ver también