Convertir OLM a PST
Convertir OLM a PST
OLM (Outlook for Mac) es un formato de archivo utilizado por Microsoft Outlook para Mac para almacenar mensajes de correo, contactos, calendarios, tareas y otros datos. Es el formato de archivo nativo de Outlook para Mac, por lo que no es posible abrir un archivo Outlook para Mac (OLM) en Outlook para Windows. Para trabajar con archivos OLM en Windows, Aspose Email proporciona herramientas diseñadas específicamente para manejar archivos OLM. Su enfoque es convertir los archivos OLM a formato PST (Archivo de datos de Outlook), que es ampliamente compatible en entornos Windows. Una vez convertido al formato PST, puede importar los datos a Outlook para Windows o cualquier otro cliente de correo compatible.
Enfoque principal
El siguiente ejemplo de código demuestra cómo convertir un archivo Outlook OLM a un archivo PST usando la biblioteca Aspose.Email. Lee cada carpeta y los mensajes correspondientes del archivo OLM y los agrega al nuevo archivo PST en el mismo orden.
- Cree una instancia de la OlmStorage clase para abrir el archivo OLM de origen.
- Utilice el PersonalStorage.create método para crear un nuevo archivo PST con un nombre de archivo y versión de formato especificados.
- Lea recursivamente cada carpeta y sus mensajes del archivo OLM.
- Utilice la función add_to_pst para agregar cada carpeta y sus mensajes al archivo PST, manteniendo la estructura original.
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)
Este código es el script principal para iniciar el proceso de conversión de un archivo OLM a un archivo PST usando la biblioteca aspose.email. Demuestra cómo abrir un archivo OLM, crear un nuevo archivo PST y llamar a la función add_to_pst para realizar la tarea de transferencia de datos. Este script sirve como punto de entrada para la migración, utilizando eficientemente la función para manejar la transferencia detallada de carpetas y mensajes.
Transferencia recursiva de carpetas y mensajes
Este enfoque brinda un control más profundo sobre el proceso de manejo de carpetas y mensajes mientras se migra datos de correo electrónico de un archivo OLM a un archivo PST. El siguiente ejemplo de código utiliza la función add_to_pst, que define la lógica de transferencia. Su papel principal es recorrer recursivamente carpetas y mensajes, asegurando que se transfieran y replicen correctamente en el formato PST. Esta función es altamente reutilizable y se espera que se use como parte de una aplicación o script más grande que gestione la apertura y creación de estos archivos.
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)
Determinar tipos de carpetas en PST
Al convertir un archivo OLM a PST, debemos asegurar que la estructura de carpetas se preserve y que cada carpeta en el archivo PST tenga el tipo correcto. A diferencia de PST, las carpetas en OLM no tienen tipos predefinidos. Para categorizar y transferir datos correctamente, siga los pasos a continuación:
- Lea el primer mensaje de una carpeta OLM y determine su tipo.
- Utilice este tipo de mensaje para calcular el tipo de carpeta apropiado en PST usando un método de clasificación.
- Cree una carpeta del tipo determinado en el archivo PST.
- Agregue el mensaje a la carpeta PST recién creada.
Para los mensajes restantes en la carpeta OLM, asumimos que pertenecen a la misma categoría, ya que el tipo de carpeta ya ha sido establecido.
La función get_container_class ayuda a categorizar elementos de Outlook asignando diferentes clases de mensaje a los tipos de carpeta PST correctos:
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"