Converti OLM in PST

Converti OLM in PST

OLM (Outlook per Mac) è un formato di file utilizzato da Microsoft Outlook per Mac per memorizzare messaggi email, contatti, calendari, attività e altri dati. È il formato di file nativo per Outlook per Mac, quindi non è possibile aprire un file Outlook per Mac (OLM) in Outlook per Windows. Per lavorare con i file OLM in Windows, Aspose Email fornisce strumenti specificamente progettati per gestire i file OLM. Il suo approccio consiste nel convertire i file OLM in formato PST (Outlook Data File), ampiamente supportato negli ambienti Windows. Una volta convertiti in formato PST, è possibile importare i dati in Outlook per Windows o in qualsiasi altro client email compatibile.

Approccio principale

Il seguente esempio di codice dimostra come convertire un file Outlook OLM in un file PST usando la libreria Aspose.Email. Legge ogni cartella e i messaggi corrispondenti dal file OLM e li aggiunge al nuovo file PST nello stesso ordine.

  1. Crea un’istanza di OlmStorage classe per aprire il file OLM sorgente.
  2. Usa il PersonalStorage.create metodo per creare un nuovo file PST con un nome file e una versione di formato specificati.
  3. Leggi ricorsivamente ogni cartella e i suoi messaggi dal file OLM.
  4. Utilizza la funzione add_to_pst per aggiungere ogni cartella e i suoi messaggi al file PST, mantenendo la struttura 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)

Questo codice è lo script principale per avviare il processo di conversione di un file OLM in un file PST utilizzando la libreria aspose.email. Dimostra come aprire un file OLM, creare un nuovo file PST e chiamare la funzione add_to_pst per eseguire il compito di trasferimento dati. Questo script funge da punto di ingresso per la migrazione, utilizzando in modo efficiente la funzione per gestire il trasferimento dettagliato di cartelle e messaggi.

Trasferimento ricorsivo di cartelle e messaggi

Questo approccio fornisce un controllo più approfondito sul processo di gestione di cartelle e messaggi durante la migrazione dei dati email da un file OLM a un file PST. L’esempio di codice qui sotto utilizza la funzione add_to_pst che definisce la logica di trasferimento. Il suo ruolo principale è attraversare ricorsivamente cartelle e messaggi, garantendo che vengano trasferiti e replicati correttamente nel formato PST. Questa funzione è altamente riutilizzabile e si prevede venga usata come parte di un’applicazione più grande o di uno script che gestisce l’apertura e la creazione di questi file.


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)

Determinare i tipi di cartella in PST

Durante la conversione di un file OLM in PST, dobbiamo assicurarci che la struttura delle cartelle sia preservata e che ogni cartella nel file PST abbia il tipo corretto. A differenza di PST, le cartelle in OLM non hanno tipi predefiniti. Per categorizzare correttamente e trasferire i dati, segui i passaggi seguenti:

  1. Leggi il primo messaggio da una cartella OLM e determina il suo tipo.
  2. Usa questo tipo di messaggio per calcolare il tipo di cartella appropriato in PST utilizzando un metodo di classificazione.
  3. Crea una cartella del tipo determinato nel file PST.
  4. Aggiungi il messaggio alla cartella PST appena creata.

Per i messaggi rimanenti nella cartella OLM, presumiamo che appartengano alla stessa categoria, poiché il tipo di cartella è già stato stabilito.

La funzione get_container_class aiuta a categorizzare gli elementi di Outlook mappando le diverse classi di messaggi ai corretti tipi di cartella PST:

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"