Criar e Organizar Arquivos PST em Python

Criar Novo Arquivo PST e Adicionar Subpastas

Aspose.Email fornece a funcionalidade para criar arquivos Personal Storage Table (PST) do zero e adicionar subpastas a eles. Com o PersonalStorage classe, você pode gerenciar operações relacionadas a arquivos PST, que armazenam mensagens de email, eventos de calendário, contatos e outros dados.

O exemplo de código a seguir demonstra como criar um novo arquivo de armazenamento e adicionar a ele uma pasta "Inbox":

  1. Use o PersonalStorage.create método para gerar um novo arquivo PST com o diretório especificado. O arquivo é criado usando o UNICODE formato para compatibilidade com aplicativos modernos.
  2. Acesse a pasta raiz do arquivo PST e adicione uma nova subpasta chamada "Inbox" para organizar as mensagens de email.

Verificação de Correspondência de Classe de Contêiner

Aspose.Email for Python oferece uma solução que aprimora o processo de validação durante a criação de pastas em arquivos PST. Com a propriedade enforce_container_class_matching do FolderCreationOptions classe, você pode garantir correspondência estrita de classes de contêiner ao adicionar uma nova pasta ao armazenamento PST. Esse recurso ajuda a manter a hierarquia organizacional dentro do arquivo PST, impedindo incompatibilidades nas classes de contêiner. Definindo ‘EnforceContainerClassMatching’ como ’true’, uma exceção será lançada se as classes de contêiner das pastas pai e filho não corresponderem, fornecendo uma proteção contra estruturas de pastas incorretas. O comportamento padrão dessa propriedade é ‘false’, permitindo flexibilidade na criação de pastas, ao mesmo tempo que possibilita impor correspondência estrita de classes de contêiner quando necessário.

O exemplo de código a seguir demonstra o uso da propriedade enforce_container_class_matching para controlar se uma exceção deve ser lançada ao adicionar pastas com classes de contêiner incompatíveis:

with PersonalStorage.create("storage.pst", FileFormatVersion.Unicode) as pst:
    contacts = pst.createpredefinedfolder("Contacts", StandardIpmFolder.Contacts)
    
    # An exception will not arise. EnforceContainerClassMatching is False by default.
    contacts.addsubfolder("Subfolder1", "IPF.Note")
    
    # An exception will occur as the container class of the subfolder being added (IPF.Note)
    # does not match the container class of the parent folder (IPF.Contact).
    contacts.addsubfolder("Subfolder3", FolderCreationOptions(enforcecontainerclassmatching=True, containerclass="IPF.Note"))

Alterando a Classe de Contêiner da Pasta

Às vezes é necessário alterar a classe de uma pasta. Um exemplo comum é quando mensagens de diferentes tipos (compromissos, mensagens, etc.) são adicionadas à mesma pasta. Nesses casos, a classe da pasta precisa ser alterada para que todos os elementos na pasta sejam exibidos corretamente. O trecho de código a seguir mostra como mudar a classe de contêiner de uma pasta em PST para esse propósito:

Adicionar Mensagens em Massa com Desempenho Aprimorado

Adicionar mensagens em massa a um arquivo PST, em vez de adicioná‑las individualmente, pode oferecer várias vantagens, sobretudo em termos de eficiência e desempenho: menos operações de I/O, tempo reduzido para concluir a tarefa, recursos do sistema são mais eficientemente utilizados, etc. O método add_messages da FolderInfo classe é usada para transferir a coleção de mensagens MAPI obtidas da pasta fonte para a pasta de destino.

Adicionar Mensagens de Outro PST

Para enumerar e recuperar todas as mensagens MAPI da pasta fonte de um arquivo PST, use o método enumerate_mapi_messages() da FolderInfo classe. Em seguida, adicione essas mensagens à pasta de destino de outro arquivo PST.

import aspose.email as ae

src_pst = ae.storage.pst.PersonalStorage.from_file("source.pst", False)
dest_pst = ae.storage.pst.PersonalStorage.from_file("destination.pst")

# Get the folder by name
src_folder = src_pst.root_folder.get_sub_folder("SomeFolder")
dest_folder = dest_pst.root_folder.get_sub_folder("SomeFolder")

dest_folder.add_messages(src_folder.enumerate_mapi_messages())

Adicionar Mensagens de Diretório

Para adicionar mensagens a partir de um diretório, após abrir o arquivo e obter a referência a uma pasta específica dentro do arquivo PST, recupere uma lista de nomes de arquivos de um diretório especificado pela variável "path" e crie uma lista vazia de MSG para carregar cada arquivo como um MapiMessage. Anexe cada mensagem carregada à msg_list. O exemplo de código abaixo demonstra o processo de adição de mensagens a partir do diretório:

import aspose.email as ae
import os

pst = ae.storage.pst.PersonalStorage.from_file("my.pst", False)

# Get the folder by name
folder = pst.root_folder.get_sub_folder("SomeFolder")

dirs = os.listdir("path")
msg_list = []

for file in dirs:
    msg = ae.mapi.MapiMessage.load(file)
    msg_list.append(msg)

folder.add_messages(iter(msg_list))