Analisar arquivos PST do Outlook em Python

PST (Personal Storage Table) é um formato de arquivo de armazenamento usado por diferentes programas da Microsoft. Os arquivos PST são capazes de manter dados de mensagens, contatos, calendários, eventos, etc. É usado por softwares populares da Microsoft, como MS Outlook, Exchange e Windows Messaging. Em certos casos, pode ser necessário analisar um arquivo PST e extrair dados dele programaticamente. Para conseguir isso, este artigo mostra como analisar arquivos PST de dentro dos aplicativos Python.

Biblioteca Python para analisar arquivos PST

Para analisar arquivos PST, usaremos Aspose.Email for Python. É uma poderosa biblioteca Python que permite implementar clientes de e-mail ricos em recursos sem problemas. Além disso, permite trabalhar com formatos populares de e-mail e armazenamento. Você pode instalar a biblioteca de PyPI usando o seguinte comando.

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

Analisar um arquivo PST em Python

A seguir estão as etapas para analisar um arquivo PST e extrair suas informações em Python.

  • Carregue o arquivo PST usando o método PersonalStorage.fromfile().
  • Obtenha a coleção de pastas no PST usando o método PersonalStorage.rootfolder.getsubfolders().
  • Recupere as informações das pastas, como nome, número de itens, etc.

O exemplo de código a seguir mostra como analisar um arquivo PST e buscar as informações das pastas.

from aspose.email import PersonalStorage

# Carregar arquivo PST
personalStorage = PersonalStorage.from_file("Outlook.pst")

# Obter coleção de pastas
folderInfoCollection = personalStorage.root_folder.get_sub_folders()

# Extrair informações das pastas
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))

Extrair mensagens de um arquivo PST em Python

As mensagens são as principais entidades armazenadas em arquivos PST por programas da Microsoft, como o MS Outlook. Então vamos ver como extrair mensagens de um arquivo PST em Python.

  • Carregue o arquivo PST usando o método PersonalStorage.fromfile().
  • Obtenha a referência da pasta desejada em um objeto usando o método PersonalStorage.rootfolder.getsubfolder().
  • Obtenha a coleção de mensagens usando o método getcontents().
  • Percorra as mensagens na coleção e leia os campos de cada mensagem.

O exemplo de código a seguir mostra como extrair mensagens de um arquivo PST em Python.

from aspose.email import PersonalStorage

# Carregar arquivo PST
sourcePst = PersonalStorage.from_file("Outlook.pst")

# Selecione a pasta desejada
sourceFolder = sourcePst.root_folder.get_sub_folder("Inbox")

# Obter conteúdo na pasta
messageInfoCollection = sourceFolder.get_contents()

# Percorrer as mensagens na pasta
for messageInfo in messageInfoCollection:
        print ("Subject: " + messageInfo.subject)
        print("To: " + messageInfo.display_to)

Extrair contatos de um arquivo PST em Python

Em certos casos, pode ser necessário extrair as informações dos contatos armazenadas em um arquivo PST. As etapas a seguir mostram como acessar os contatos em um arquivo PST em Python.

  • Carregue o arquivo PST usando o método PersonalStorage.fromfile().
  • Obtenha a referência da pasta de contatos usando o método getpredefinedfolder(StandardIpmFolder.CONTACTS).
  • Obtenha uma coleção de contatos usando o método getcontents().
  • Percorra a coleção e leia cada contato ou salve-o.

O exemplo de código a seguir mostra como extrair contatos de um arquivo PST em Python.

from aspose.email import PersonalStorage, StandardIpmFolder, ContactSaveFormat

# Carregar arquivo PST
pst = PersonalStorage.from_file("SampleContacts_out.pst")

# Selecione a pasta de contatos				
folderInfo = pst.get_predefined_folder(StandardIpmFolder.CONTACTS)

# Obter contatos
contactCollection = folderInfo.get_contents()

# Percorrer a coleção de contatos
for  messageInfo in contactCollection:

    # Obtenha as informações de contato
    mapi = pst.extract_message(messageInfo)

    contact = mapi.to_mapi_message_item()

    # Exibir alguns conteúdos na tela
    print("Name: " + contact.name_info.display_name)

    # Salvar em disco no formato MSG
    if contact.name_info.display_name is not None:
        # Salvar contato
        contact.save("Contacts\\" + contact.name_info.display_name + "_out.msg")
        contact.save("Contacts\\" + contact.name_info.display_name + "_out.vcf", ContactSaveFormat.VCARD)

Obtenha uma licença de API gratuita

Você pode experimentar o Aspose.Email for Python gratuitamente obtendo uma licença temporária.

Conclusão

Neste artigo, você aprendeu como analisar arquivos PST em Python. Além disso, você viu como extrair contatos e mensagens de um arquivo PST programaticamente em Python. Além disso, você pode explorar mais sobre o Aspose.Email usando documentação. Além disso, você pode compartilhar suas perguntas ou dúvidas em nosso fórum.

Veja também