Criar Novo Arquivo PST e Adicionar Subpastas
Além de analisar um arquivo PST existente, a Aspose.Email oferece meios para criar um arquivo PST do zero. Este artigo demonstra como criar um arquivo PST do Outlook e adicionar uma subpasta a ele.
- Criando um novo arquivo PST.
- Mudando a classe Container de uma pasta.
Use a classe PersonalStorage para criar um arquivo PST em algum local em um disco local. Para criar um arquivo PST do zero:
- Crie um PST usando o método PersonalStorage.Create().
- Adicione uma subpasta na raiz do arquivo PST acessando a pasta Root e, em seguida, chamando o método AddSubFolder.
O seguinte trecho de código mostra como criar um arquivo PST e adicionar uma subpasta chamada Inbox.
Verificação de Correspondência da Classe Container ao Adicionar uma Pasta ao PST
Aspose.Email para Python oferece uma solução que aprimora o processo de validação durante a criação de pastas em arquivos PST. Com a propriedade ‘EnforceContainerClassMatching’ da classe FolderCreationOptions, você pode garantir a correspondência rigorosa das classes de containers ao adicionar uma nova pasta ao armazenamento PST. Este recurso ajuda a manter a hierarquia organizacional dentro do arquivo PST, prevenindo discrepâncias nas classes de containers. Ao definir ‘EnforceContainerClassMatching’ como ‘true’, uma exceção será lançada se as classes de containers das pastas pai e filha não corresponderem, proporcionando uma proteção contra estruturas de pastas incorretas. O comportamento padrão dessa propriedade é ‘false’, permitindo flexibilidade na criação de pastas enquanto possibilita a aplicação de correspondência rigorosa de classes de containers quando necessário.
O seguinte exemplo de código demonstra o uso da propriedade ‘EnforceContainerClassMatching’ para controlar se uma exceção deve ser lançada ao adicionar pastas com classes de containers em desacordo:
with PersonalStorage.create("storage.pst", FileFormatVersion.Unicode) as pst:
contacts = pst.createpredefinedfolder("Contacts", StandardIpmFolder.Contacts)
# Uma exceção não ocorrerá. EnforceContainerClassMatching é False por padrão.
contacts.addsubfolder("Subfolder1", "IPF.Note")
# Uma exceção ocorrerá, pois a classe de container da subpasta sendo adicionada (IPF.Note)
# não corresponde à classe de container da pasta pai (IPF.Contact).
contacts.addsubfolder("Subfolder3", FolderCreationOptions(enforcecontainerclassmatching=True, containerclass="IPF.Note"))
Mudando a Classe Container de uma Pasta
Às vezes, é necessário mudar 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 seguinte trecho de código mostra como mudar a classe de container de uma pasta em PST para esse propósito.
Adicionar Mensagens em Lote com Desempenho Aprimorado
Adicionar mensagens em lote a um arquivo PST em vez de adicioná-las individualmente pode oferecer várias vantagens, particularmente em termos de eficiência e desempenho: menos operações de I/O, tempo reduzido para concluir a tarefa, recursos do sistema utilizados de forma mais eficiente, etc. O método add_messages da classe FolderInfo é usado para transferir a coleção de mensagens MAPI obtidas da pasta de origem para a pasta de destino.
Adicionar Mensagens de Outro PST
Para enumerar e recuperar todas as mensagens MAPI da pasta de origem de um arquivo PST, use o método enumerate_mapi_messages() da classe FolderInfo. 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")
# Obtenha a pasta pelo nome
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 de um diretório, depois que o arquivo é aberto e a referência a uma pasta específica dentro do arquivo PST é obtida, 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. Adicione cada mensagem carregada à msg_list. O exemplo de código abaixo demonstra o processo de adição de mensagens de um diretório:
import aspose.email as ae
import os
pst = ae.storage.pst.PersonalStorage.from_file("my.pst", False)
# Obtenha a pasta pelo nome
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))