OLM naar PST converteren

OLM naar PST converteren

OLM (Outlook voor Mac) is een bestandsformaat dat Microsoft Outlook voor Mac gebruikt om e‑mailberichten, contacten, agenda’s, taken en andere gegevens op te slaan. Het is het native bestandsformaat voor Outlook voor Mac, dus het is niet mogelijk om een Outlook‑voor‑Mac‑bestand (OLM) te openen in Outlook voor Windows. Om met OLM‑bestanden in Windows te werken, biedt Aspose Email tools die specifiek zijn ontworpen voor OLM‑bestanden. De aanpak bestaat uit het converteren van OLM‑bestanden naar PST (Outlook‑databestand)‑formaat, dat breed wordt ondersteund in Windows‑omgevingen. Na conversie naar PST kun je de gegevens importeren in Outlook voor Windows of een andere compatibele e‑mailclient.

Primaire aanpak

Het volgende codevoorbeeld laat zien hoe je een Outlook OLM‑bestand naar een PST‑bestand converteert met behulp van de Aspose.Email‑bibliotheek. Het leest elke map en de bijbehorende berichten uit het OLM‑bestand en voegt ze toe aan het nieuwe PST‑bestand in dezelfde volgorde.

  1. Maak een instantie van de OlmStorage klasse om het bron‑OLM‑bestand te openen.
  2. Gebruik de PersonalStorage.create methode om een nieuw PST‑bestand te maken met een opgegeven bestandsnaam en formatversie.
  3. Lees recursief elke map en de bijbehorende berichten uit het OLM‑bestand.
  4. Gebruik de functie add_to_pst om elke map en de bijbehorende berichten toe te voegen aan het PST‑bestand, waarbij de oorspronkelijke structuur behouden blijft.

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)

Deze code is het hoofdscript om het proces van het converteren van een OLM‑bestand naar een PST‑bestand te starten met behulp van de aspose.email‑bibliotheek. Het laat zien hoe je een OLM‑bestand opent, een nieuw PST‑bestand maakt en de functie add_to_pst aanroept om de gegevensoverdracht uit te voeren. Dit script dient als instappunt voor de migratie en gebruikt de functie efficiënt om de gedetailleerde overdracht van mappen en berichten af te handelen.

Recursieve map‑ en berichtoverdracht

Deze aanpak biedt een diepere controle over het map- en berichtverwerkingsproces tijdens het migreren van e‑mailgegevens van een OLM‑bestand naar een PST‑bestand. Het onderstaande codevoorbeeld maakt gebruik van de functie add_to_pst, die de overdrachtslogica definieert. De hoofdtaak is recursief door mappen en berichten te lopen, zodat ze correct worden overgebracht en gerepliceerd in het PST‑formaat. Deze functie is zeer herbruikbaar en is bedoeld om te worden gebruikt als onderdeel van een grotere applicatie of script die het openen en aanmaken van deze bestanden beheert.


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)

Bepaal maptypes in PST

Bij het converteren van een OLM‑bestand naar PST moeten we ervoor zorgen dat de mapstructuur behouden blijft en dat elke map in het PST‑bestand het juiste type heeft. In tegenstelling tot PST hebben mappen in OLM geen vooraf gedefinieerde types. Volg de onderstaande stappen om data correct te categoriseren en over te zetten:

  1. Lees het eerste bericht uit een OLM-map en bepaal het type.
  2. Gebruik dit berichttype om het juiste maptype in PST te berekenen met behulp van een classificatiemethode.
  3. Maak een map van het bepaalde type aan in het PST‑bestand.
  4. Voeg het bericht toe aan de nieuw aangemaakte PST-map.

Voor de resterende berichten in de OLM-map gaan we ervan uit dat ze tot dezelfde categorie behoren, aangezien het maptype al is vastgesteld.

De functie get_container_class helpt Outlook‑items te categoriseren door verschillende berichtklassen toe te wijzen aan de juiste PST‑maptypes:

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"