OLM in PST konvertieren
OLM in PST konvertieren
OLM (Outlook for Mac) ist ein Dateiformat, das von Microsoft Outlook für Mac verwendet wird, um E-Mail-Nachrichten, Kontakte, Kalender, Aufgaben und andere Daten zu speichern. Es ist das native Dateiformat für Outlook für Mac, sodass es nicht möglich ist, eine Outlook‑für‑Mac‑(OLM‑)Datei in Outlook für Windows zu öffnen. Um OLM‑Dateien unter Windows zu bearbeiten, stellt Aspose Email speziell dafür entwickelte Werkzeuge zur Verfügung. Der Ansatz besteht darin, OLM‑Dateien in das PST‑Format (Outlook Data File) zu konvertieren, das in Windows‑Umgebungen weit verbreitet ist. Nach der Konvertierung in PST können Sie die Daten in Outlook für Windows oder in jedem anderen kompatiblen E‑Mail‑Client importieren.
Primärer Ansatz
Das folgende Codebeispiel zeigt, wie man eine Outlook-OLM-Datei mit der Aspose.Email-Bibliothek in eine PST-Datei konvertiert. Es liest jeden Ordner und die zugehörigen Nachrichten aus der OLM-Datei und fügt sie in derselben Reihenfolge zur neuen PST-Datei hinzu.
- Erstellen Sie eine Instanz von dem OlmStorage Klasse zum Öffnen der Quell-OLM-Datei.
- Verwenden Sie die PersonalStorage.create Methode zum Erstellen einer neuen PST-Datei mit angegebenem Dateinamen und Formatversion.
- Lesen Sie rekursiv jeden Ordner und dessen Nachrichten aus der OLM-Datei.
- Verwenden Sie die Funktion add_to_pst, um jeden Ordner und dessen Nachrichten zur PST-Datei hinzuzufügen und dabei die ursprüngliche Struktur beizubehalten.
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)
Dieser Code ist das Hauptskript, um den Prozess der Konvertierung einer OLM-Datei in eine PST-Datei mit der aspose.email-Bibliothek zu starten. Er zeigt, wie man eine OLM-Datei öffnet, eine neue PST-Datei erstellt und die Funktion add_to_pst aufruft, um die Datenübertragung durchzuführen. Dieses Skript dient als Einstiegspunkt für die Migration und nutzt die Funktion effizient, um die detaillierte Übertragung von Ordnern und Nachrichten zu handhaben.
Rekursiver Ordner- und Nachrichten-Transfer
Dieser Ansatz bietet eine tiefere Kontrolle über den Ordner- und Nachrichtenverarbeitungsprozess beim Migrieren von E-Mail-Daten aus einer OLM-Datei in eine PST-Datei. Das nachstehende Codebeispiel verwendet die Funktion add_to_pst, die die Übertragungslogik definiert. Ihre Hauptaufgabe besteht darin, rekursiv durch Ordner und Nachrichten zu traversieren, um sicherzustellen, dass sie korrekt in das PST-Format übertragen und repliziert werden. Diese Funktion ist stark wiederverwendbar und soll als Teil einer größeren Anwendung oder eines Skripts verwendet werden, das das Öffnen und Erstellen dieser Dateien verwaltet.
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)
Bestimmen der Ordnertypen in PST
Beim Konvertieren einer OLM-Datei in PST müssen wir sicherstellen, dass die Ordnerstruktur erhalten bleibt und dass jeder Ordner in der PST-Datei den korrekten Typ hat. Im Gegensatz zu PST haben Ordner in OLM keine vordefinierten Typen. Um Daten korrekt zu kategorisieren und zu übertragen, befolgen Sie die nachstehenden Schritte:
- Lesen Sie die erste Nachricht aus einem OLM-Ordner und bestimmen Sie deren Typ.
- Verwenden Sie diesen Nachrichtentyp, um den geeigneten Ordnertyp in PST mithilfe einer Klassifizierungsmethode zu ermitteln.
- Erstellen Sie einen Ordner des ermittelten Typs in der PST-Datei.
- Fügen Sie die Nachricht zum neu erstellten PST-Ordner hinzu.
Für die restlichen Nachrichten im OLM-Ordner gehen wir davon aus, dass sie derselben Kategorie angehören, da der Ordnertyp bereits festgelegt wurde.
Die Funktion get_container_class hilft dabei, Outlook-Elemente zu kategorisieren, indem verschiedene Nachrichtenklassen den richtigen PST-Ordnerarten zugeordnet werden:
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"