Créer et organiser des fichiers PST en Python
Créer un nouveau fichier PST et ajouter des sous‑dossiers
Aspose.Email fournit la fonctionnalité de créer des fichiers Personal Storage Table (PST) à partir de zéro et d’y ajouter des sous‑dossiers. Avec le PersonalStorage classe, vous pouvez gérer les opérations liées aux fichiers PST, qui stockent les messages électroniques, les événements de calendrier, les contacts et d’autres données.
L’exemple de code ci‑dessus montre comment créer un nouveau fichier de stockage et y ajouter un dossier "Inbox" :
- Utilisez le PersonalStorage.create méthode pour générer un nouveau fichier PST avec le répertoire spécifié. Le fichier est créé en utilisant le
UNICODEformat pour la compatibilité avec les applications modernes. - Accédez au dossier racine du fichier PST et ajoutez un nouveau sous‑dossier nommé "Inbox" pour organiser les messages électroniques.
Vérification de la correspondance des classes de conteneur
Aspose.Email pour Python propose une solution qui améliore le processus de validation lors de la création de dossiers dans les fichiers PST. Avec la propriété enforce_container_class_matching du FolderCreationOptions classe, vous pouvez garantir une correspondance stricte des classes de conteneur lors de l’ajout d’un nouveau dossier au stockage PST. Cette fonctionnalité aide à maintenir la hiérarchie organisationnelle dans le fichier PST en évitant les incompatibilités de classes de conteneur. En réglant ‘EnforceContainerClassMatching’ sur ’true’, une exception sera levée si les classes de conteneur du dossier parent et de l’enfant ne correspondent pas, offrant une protection contre des structures de dossiers incorrectes. Le comportement par défaut de cette propriété est ‘false’, ce qui permet une flexibilité lors de la création de dossiers tout en vous permettant d’imposer une correspondance stricte lorsque cela est requis.
L’exemple de code ci‑dessus montre l’utilisation de la propriété enforce_container_class_matching pour contrôler si une exception doit être levée lors de l’ajout de dossiers avec des classes de conteneur incompatibles :
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"))
Modifier la classe de conteneur du dossier
Il est parfois nécessaire de modifier la classe d’un dossier. Un exemple courant est celui où des messages de types différents (rendez‑vous, messages, etc.) sont ajoutés au même dossier. Dans ces cas, la classe du dossier doit être modifiée pour que tous les éléments du dossier s’affichent correctement. Le snippet de code ci‑dessous montre comment changer la classe de conteneur d’un dossier dans un PST à cette fin :
Ajouter des messages en masse avec performance améliorée
L’ajout en masse de messages à un fichier PST, plutôt que de les ajouter individuellement, peut offrir plusieurs avantages, notamment en termes d’efficacité et de performances : moins d’opérations d’E/S, réduction du temps d’exécution, utilisation plus efficace des ressources système, etc. La méthode add_messages du FolderInfo classe est utilisée pour transférer la collection de messages MAPI obtenus du dossier source vers le dossier destination.
Ajouter des messages depuis un autre PST
Pour énumérer et récupérer tous les messages MAPI du dossier source d’un fichier PST, utilisez la méthode enumerate_mapi_messages() du FolderInfo classe. Ensuite, ajoutez ces messages au dossier de destination d’un autre fichier 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())
Ajouter des messages depuis un répertoire
Pour ajouter des messages depuis un répertoire, après l’ouverture du fichier et l’obtention de la référence à un dossier spécifique dans le fichier PST, récupérez la liste des noms de fichiers d’un répertoire indiqué par la variable "path" et créez une liste MSG vide afin de charger chaque fichier en tant que MapiMessage. Ajoutez chaque message chargé à la msg_list. L’exemple de code ci‑dessus montre le processus d’ajout de messages depuis un répertoire :
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))