Creare e organizzare file PST in Python
Creare un nuovo file PST e aggiungere sottocartelle
Aspose.Email fornisce la funzionalità per creare file Personal Storage Table (PST) da zero e aggiungere sottocartelle. Con il PersonalStorage classe, è possibile gestire operazioni relative ai file PST, che memorizzano messaggi email, eventi di calendario, contatti e altri dati.
Il seguente esempio di codice dimostra come creare un nuovo file di archiviazione e aggiungere una cartella "Inbox":
- Usa il PersonalStorage.create metodo per generare un nuovo file PST nella directory specificata. Il file è creato usando il
UNICODEformato per la compatibilità con le applicazioni moderne. - Accedere alla cartella radice del file PST e aggiungere una nuova sottocartella chiamata "Inbox" per organizzare i messaggi email.
Controllo del matching della classe contenitore
Aspose.Email per Python offre una soluzione che migliora il processo di validazione durante la creazione di cartelle nei file PST. Con la proprietà enforce_container_class_matching del FolderCreationOptions classe, è possibile garantire un matching rigoroso delle classi contenitore quando si aggiunge una nuova cartella all’archivio PST. Questa funzione aiuta a mantenere la gerarchia organizzativa all’interno del file PST impedendo incoerenze nelle classi contenitore. Impostando ‘EnforceContainerClassMatching’ su ’true’, verrà sollevata un’eccezione se le classi contenitore della cartella padre e figlia non corrispondono, fornendo una salvaguardia contro strutture di cartelle errate. Il comportamento predefinito di questa proprietà è ‘false’, consentendo flessibilità nella creazione delle cartelle pur permettendo di imporre un matching rigido quando necessario.
Il seguente esempio di codice dimostra l’uso della proprietà enforce_container_class_matching per controllare se generare un’eccezione quando si aggiungono cartelle con classi contenitore non corrispondenti:
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"))
Modifica della classe contenitore della cartella
Talvolta è necessario cambiare la classe di una cartella. Un esempio comune è quando messaggi di tipi diversi (appuntamenti, messaggi, ecc.) vengono aggiunti alla stessa cartella. In tali casi, la classe della cartella deve essere cambiata per tutti gli elementi affinché vengano visualizzati correttamente. Il seguente frammento di codice mostra come cambiare la classe contenitore di una cartella in PST per questo scopo:
Aggiungere messaggi in blocco con prestazioni migliorate
Aggiungere messaggi in blocco a un file PST rispetto all’aggiungerli singolarmente può offrire diversi vantaggi, in particolare in termini di efficienza e prestazioni: meno operazioni I/O, tempo ridotto per completare l’attività, le risorse di sistema sono utilizzate più efficientemente, ecc. Il metodo add_messages del FolderInfo classe viene utilizzata per trasferire la collezione di messaggi MAPI ottenuta dalla cartella sorgente alla cartella di destinazione.
Aggiungere messaggi da un altro PST
Per enumerare e recuperare tutti i messaggi MAPI dalla cartella sorgente di un file PST, utilizzare il metodo enumerate_mapi_messages() del FolderInfo classe. Quindi, aggiungere questi messaggi alla cartella di destinazione di un altro file 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())
Aggiungere messaggi da directory
Per aggiungere messaggi da una directory, dopo aver aperto il file e ottenuto il riferimento a una cartella specifica all’interno del file PST, recuperare un elenco di nomi di file da una directory specificata dalla variabile "path" e creare una lista MSG vuota per caricare ogni file come MapiMessage. Aggiungere ogni messaggio caricato alla msg_list. Il seguente esempio di codice dimostra il processo di aggiunta di messaggi da una directory:
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))