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":
- Use o PersonalStorage.create método para gerar um novo arquivo PST com o diretório especificado. O arquivo é criado usando o
UNICODEformato para compatibilidade com aplicativos modernos. - 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))