OLM を PST に変換

OLM を PST に変換

OLM(Outlook for Mac)は、Microsoft Outlook for Mac がメールメッセージ、連絡先、カレンダー、タスク、その他のデータを保存するために使用するファイル形式です。これは Outlook for Mac のネイティブ形式であるため、Windows 用 Outlook で OLM ファイルを開くことはできません。Windows で OLM ファイルを扱うには、Aspose Email が OLM ファイル専用に設計されたツールを提供しています。その方法は、OLM ファイルを Windows 環境で広くサポートされている PST(Outlook データ ファイル)形式に変換することです。PST 形式に変換すれば、データを Windows 用 Outlook やその他の互換性のあるメールクライアントにインポートできます。

基本的なアプローチ

以下のコードサンプルは Aspose.Email ライブラリを使用して Outlook OLM ファイルを PST ファイルに変換する方法を示しています。OLM ファイルの各フォルダーと対応するメッセージを読み取り、同じ順序で新しい PST ファイルに追加します。

  1. インスタンスを作成します OlmStorage ソース OLM ファイルを開くクラス。
  2. 使用する PersonalStorage.create 指定したファイル名とフォーマットバージョンで新しい PST ファイルを作成するメソッド。
  3. OLM ファイルから各フォルダーとそのメッセージを再帰的に読み取ります。
  4. add_to_pst 関数を使用して、各フォルダーとそのメッセージを PST ファイルに追加し、元の構造を保持します。

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)

このコードは aspose.email ライブラリを使用して OLM ファイルを PST ファイルに変換するプロセスを開始するメインスクリプトです。OLM ファイルのオープン、新しい PST ファイルの作成、そして add_to_pst 関数を呼び出してデータ転送タスクを実行する方法を示しています。このスクリプトはマイグレーションのエントリーポイントとして機能し、フォルダーとメッセージの詳細な転送を効率的に処理します。

再帰的なフォルダーおよびメッセージ転送

このアプローチは、OLM ファイルから PST ファイルへのメールデータ移行時に、フォルダーとメッセージの処理プロセスをより細かく制御できます。以下のコードサンプルは転送ロジックを定義する add_to_pst 関数を使用しています。その主な役割はフォルダーとメッセージを再帰的に走査し、PST 形式で適切に転送・複製されることを保証することです。この関数は高い再利用性があり、これらのファイルのオープンや作成を管理する大規模アプリケーションやスクリプトの一部として使用されることを想定しています。


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)

PST のフォルダータイプを決定

OLM ファイルを PST に変換する際は、フォルダー構造を保持し、PST ファイル内の各フォルダーが正しいタイプであることを確認する必要があります。PST と異なり、OLM のフォルダーには事前定義されたタイプがありません。データを正しく分類・転送するために、以下の手順に従ってください:

  1. OLM フォルダーから最初のメッセージを読み取り、そのタイプを判定します。
  2. このメッセージタイプを使用して、分類方法で PST の適切なフォルダータイプを算出します。
  3. PST ファイル内に決定されたタイプのフォルダーを作成します。
  4. メッセージを新しく作成した PST フォルダーに追加します。

OLM フォルダー内の残りのメッセージは、フォルダータイプがすでに確定しているため、同じカテゴリに属するとみなします。

get_container_class 関数は、さまざまなメッセージクラスを正しい PST フォルダータイプにマッピングすることで Outlook アイテムのカテゴリ分けに役立ちます:

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"