Convertir OLM en PST
Convertir OLM en PST
OLM (Outlook pour Mac) est un format de fichier utilisé par Microsoft Outlook pour Mac afin de stocker les messages électroniques, contacts, calendriers, tâches et autres données. C’est le format de fichier natif d’Outlook pour Mac, il n’est donc pas possible d’ouvrir un fichier Outlook pour Mac (OLM) dans Outlook pour Windows. Pour travailler avec des fichiers OLM sous Windows, Aspose Email fournit des outils spécialement conçus pour gérer les fichiers OLM. Son approche consiste à convertir les fichiers OLM en format PST (Outlook Data File), largement supporté dans les environnements Windows. Une fois convertis au format PST, vous pouvez importer les données dans Outlook pour Windows ou tout autre client de messagerie compatible.
Approche principale
L’exemple de code suivant montre comment convertir un fichier Outlook OLM en fichier PST à l’aide de la bibliothèque Aspose.Email. Il lit chaque dossier et les messages correspondants du fichier OLM et les ajoute au nouveau fichier PST dans le même ordre.
- Créez une instance de la OlmStorage classe pour ouvrir le fichier OLM source.
- Utilisez le PersonalStorage.create méthode pour créer un nouveau fichier PST avec un nom de fichier et une version de format spécifiés.
- Lisez de manière récursive chaque dossier et ses messages depuis le fichier OLM.
- Utilisez la fonction add_to_pst pour ajouter chaque dossier et ses messages au fichier PST, en conservant la structure originale.
import aspose.email as ae
olm = ae.storage.olm.OlmStorage("my.olm")
pst = ae.storage.pst.PersonalStorage.create("my.pst", ae.storage.pst.FileFormatVersion.UNICODE)
for folder in olm.folder_hierarchy:
add_to_pst(pst.root_folder, folder)
Ce code est le script principal pour lancer le processus de conversion d’un fichier OLM en fichier PST en utilisant la bibliothèque aspose.email. Il montre comment ouvrir un fichier OLM, créer un nouveau fichier PST et appeler la fonction add_to_pst pour exécuter la tâche de transfert de données. Ce script sert de point d’entrée à la migration, exploitant efficacement la fonction pour gérer le transfert détaillé des dossiers et des messages.
Transfert récursif des dossiers et des messages
Cette approche offre un contrôle plus approfondi du processus de gestion des dossiers et des messages lors de la migration de données e‑mail d’un fichier OLM vers un fichier PST. L’exemple de code ci‑dessous utilise la fonction add_to_pst qui définit la logique de transfert. Son rôle principal est de parcourir récursivement les dossiers et les messages, en veillant à ce qu’ils soient correctement transférés et reproduits au format PST. Cette fonction est très réutilisable et est prévue pour être utilisée dans le cadre d’une application ou d’un script plus large qui gère l’ouverture et la création de ces fichiers.
def add_to_pst(pst_folder, olm_folder):
pst_sub_folder = pst_folder.get_sub_folder(olm_folder.name)
for msg in olm_folder.enumerate_mapi_messages():
if pst_sub_folder is None:
pst_sub_folder = pst_folder.add_sub_folder(olm_folder.name, get_container_class(msg.message_class))
pst_sub_folder.add_message(msg)
if pst_sub_folder is None:
pst_sub_folder = pst_folder.add_sub_folder(olm_folder.name)
for olm_sub_folder in olm_folder.sub_folders:
add_to_pst(pst_sub_folder, olm_sub_folder)
Déterminer les types de dossiers dans le PST
Lors de la conversion d’un fichier OLM en PST, nous devons nous assurer que la structure des dossiers est préservée et que chaque dossier du fichier PST possède le type correct. Contrairement aux PST, les dossiers dans OLM n’ont pas de types prédéfinis. Pour catégoriser correctement et transférer les données, suivez les étapes ci‑dessous :
- Lisez le premier message d’un dossier OLM et déterminez son type.
- Utilisez ce type de message pour calculer le type de dossier approprié dans le PST à l’aide d’une méthode de classification.
- Créez un dossier du type déterminé dans le fichier PST.
- Ajoutez le message au dossier PST nouvellement créé.
Pour les messages restants dans le dossier OLM, nous supposons qu’ils appartiennent à la même catégorie, le type de dossier ayant déjà été établi.
La fonction get_container_class aide à catégoriser les éléments Outlook en associant différentes classes de messages aux types de dossiers PST appropriés :
def get_container_class(message_class):
if message_class.startswith("IPM.Contact") or message_class.startswith("IPM.DistList"):
return "IPF.Contact"
if message_class.startswith("IPM.StickyNote"):
return "IPF.StickyNote"
if message_class.startswith("IPM.Activity"):
return "IPF.Journal"
if message_class.startswith("IPM.Task"):
return "IPF.Task"
if message_class.startswith("IPM.Appointment") or message_class.startswith("IPM.Schedule.meeting"):
return "IPF.Appointment"
return "IPF.Note"