Outlook for Mac OLM ファイルの管理

OLM (Outlook for Mac Archive) は、Microsoft Outlook for Mac に関連付けられたファイル形式です。メールメッセージ、連絡先、カレンダー項目、タスク、その他の Outlook データを Mac 上にアーカイブ・保存するために使用されます。OLM ファイルはバックアップまたはアーカイブ形式として機能し、ユーザーが Outlook for Mac のデータを将来参照や移行のために保存できます。OLM ファイルは Outlook for Mac 固有であり、Windows 用 Outlook の PST (Personal Storage Table) 形式とは互換性がありません。異なるプラットフォーム間で Outlook データを転送する必要がある場合は、変換ツールが便利です。Aspose.Email は、OLM ファイルのオープン、読み取り、その他の機能を含むツールを提供します。

Outlook OLM ファイルを開く

OLM 形式のファイルは 2 つの方法で開くことができます:

  • コンストラクタを使用する場合
  • 静的 ‘from_file’ メソッドを使用して

Python コンストラクタを使用して Outlook OLM ファイルを開く

ファイルを開くには、以下のコンストラクタを呼び出します OlmStorage クラスに完全なファイル名またはストリームを引数として渡します:

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage(fileName)

Python の静的メソッド FromFile を使用して OLM ファイルを開く

ファイルを開くには、 OlmStorage クラスに完全なファイル名またはストリームを引数として渡します:

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)

OLM ファイルにおけるフォルダーとメールの管理

フォルダー構造への再帰的アクセス

Aspose.Email API は、print_all_folders 関数を使用して OLM ファイルから取得したフォルダー階層を可視化および表示できます。この関数は、 OlmStorage クラスは、インデントレベルを入力として受け取り、階層を再帰的にたどり、適切なインデントで各フォルダー名を出力します。

以下は、print_all_folders 関数を使用して OLM ファイルのフォルダー階層を表示するコードサンプルです:

import aspose.email as ae


def print_all_folders(folder_hierarchy, indent):
    for folder in folder_hierarchy:
        print(f"{indent}{folder.name}")
        print_all_folders(folder.sub_folders, indent + "-")

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage(fileName)
print_all_folders(olm.folder_hierarchy, "")

上記のコードサンプルは、再帰関数を使用して OLM ファイルのフォルダー階層をより構造化され読みやすい形式で表示することを目的としています。

フォルダー構造への直接アクセス

Aspose.Email は、get_folders() メソッドを使用して OLM ファイルからフォルダー構造に直接アクセスすることも可能です。 OlmStorage クラス。

以下はフォルダー構造に直接アクセスするコードサンプルです:

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folders = olm.get_folders()

名前でフォルダーを取得

get_folder(name, ignore_case) メソッドを使用して、名前で任意のフォルダーを取得することが可能です。 OlmStorage クラスです。このメソッドはフォルダー名と大文字小文字の区別パラメータが必要です。

以下は、名前でフォルダーを取得するコードサンプルです:

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

Outlook OLM ファイルからメール一覧を取得

Aspose.Email ライブラリは、Outlook for Mac(OLM)ファイルからメールメッセージを読み取り抽出するために使用できます。以下のクラスのメソッドでメール一覧を取得できます。 OlmFolder フォルダーを表すクラス:

  • enumerate_messages() - フォルダー内の各メールメッセージをイテレートします。このメソッドはメッセージを OlmMessageInfo クラスは、件名、送信者、日付など、各メールメッセージの基本情報を提供します。
  • enumerate_mapi_messages() - フォルダー内の各メールメッセージをイテレートしますが、この場合はメッセージを MapiMessage クラスは、メールメッセージをより詳細かつ MAPI 固有の方法で表現します。メールメッセージの幅広いプロパティや詳細へアクセスでき、より高度で専門的な処理が可能です。

以下のコードサンプルは、enumerate_messages() を使用して件名を抽出し、enumerate_mapi_messages() でメッセージを .msg ファイルとして保存することで、Outlook OLM ファイルから基本的なメール件名を抽出し、詳細なメールメッセージを保存する方法を示しています。

’enumerate_messages()’ メソッドを使用した基本メール情報の抽出

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

for message_info in folder.enumerate_messages():
    print(message_info.subject)

’enumerate_mapi_messages()’ メソッドを使用した詳細メールメッセージの保存

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

for msg in folder.enumerate_mapi_messages():
    msg.save(f"{msg.subject}.msg")

OLM フォルダー内のメッセージ総数の取得

この OlmFolder クラスは、以下のメソッドでさらに多くのオプションを提供します:

  • has_messages - 現在のフォルダーにメッセージがあるかどうかを示す値を取得します。
  • message_count - メッセージ数を取得します。

以下のコードサンプルは、これらのメソッドの使用方法を示しています。

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

if folder.has_messages:
   print(f"Message count: {folder.message_count}")

Outlook OLM メッセージの更新日時の取得または設定

Aspose.Email は、メールメッセージの最終更新日時情報を取得可能にします。modified_date プロパティは OlmMessageInfo クラスは、メッセージが最後に変更された日時を表します。

以下はプロパティの使用例です。

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

for message_info in folder.enumerate_messages():
    modifiedDate = message_info.modified_date

OLM コンテンツの抽出

Outlook OLM ファイルからのメール抽出

extract_mapi_message(message_info) メソッドを使用して、メールストレージから実際の MAPI メッセージデータを取得できます。 OlmStorage クラスです。このメソッドは、提供された message_info に基づいてストレージから MAPI メッセージを抽出します。

以下のコードサンプルは、このメソッドの使用方法を示しています。

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

for message_info in folder.enumerate_messages():
    msg = olm.extract_mapi_message(message_info)

識別子による OLM ファイルからの Outlook メッセージ抽出

MAPI メッセージデータにアクセスするには、entry_id プロパティを使用してメッセージの一意識別子 (Entry ID) を取得できます。 OlmMessageInfo クラスです。その後、 OlmStorage クラスはエントリ ID をパラメーターとして渡すことで、そのエントリ ID に関連付けられた MAPI メッセージを取得します。以下のコードスニペットはこれらの機能の使用例を示しています。


import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage.from_file(fileName)
folder = olm.get_folder("Inbox", True)

for message_info in folder.enumerate_messages():
    msg = olm.extract_mapi_message(message_info.entry_id)

OLM フォルダー構造管理

Outlook OLM ファイルのフォルダー パス取得

Aspose.Email は、Outlook OLM ファイル内のフォルダーの階層パスまたは位置を取得できます。API は path プロパティを提供します。 OlmFolder クラスはフォルダーのパスを返します。以下のコードスニペットはこのプロパティの使用例を示しています。

import aspose.email as ae


def print_path(storage, folders):
    for folder in folders:
        # print the current folder path
        print(folder.path)

        if folder.sub_folders:
            print_path(storage, folder.sub_folders)


fileName = "my.olm"
olm = ae.storage.olm.OlmStorage(fileName)
print_path(olm, olm.folder_hierarchy)

Outlook OLM フォルダー内の項目数をカウント

Aspose.Email は、Outlook OLM ファイルの特定フォルダーに含まれるメールメッセージの総数をカウントする機能を提供します。message_count プロパティは OlmFolder クラスは OLM ファイル内の特定フォルダーに保存された総アイテム(メールメッセージ)数を返します。以下のコードスニペットはこのプロパティの使用例を示しています。

import aspose.email as ae


def print_message_count(folders):
    for folder in folders:
        print(f"Message Count [{folder.name}]: {folder.message_count}")


fileName = "my.olm"
olm = ae.storage.olm.OlmStorage(fileName)
print_message_count(olm.folder_hierarchy)

Outlook OLM ファイルの総項目数を取得

get_total_items_count() メソッドは OlmStorage クラスは、以下のコードサンプルに示すように、OLM ストレージに含まれるメッセージ項目の総数を返します。

import aspose.email as ae

fileName = "my.olm"
olm = ae.storage.olm.OlmStorage(fileName)
count = olm.get_total_items_count()

Outlook カテゴリ管理

Outlook カテゴリの色を取得

Aspose.Email を使用すると、OLM ファイルに保存された Outlook アイテムカテゴリに関連付けられたカテゴリカラーを簡単に取得して利用できます。 OlmItemCategory クラスは、カテゴリ名とそれぞれのカラー(十六進表記)にアクセスできるようにします。 OlmStorage クラスは OLM ストレージからカテゴリ一覧を取得する GetCategories() メソッドを備えています。以下のコードサンプルを実装することで、OML ストレージファイルから使用されているすべてのカテゴリを簡単に取得し、カテゴリ名とカラーを取得できます。

with OlmStorage.FromFile("storage.olm") as olm:
    categories = olm.GetCategories()
    
    for category in categories:
        print(f"Category name: {category.Name}")
        
        # Color is represented as a hexadecimal value: #rrggbb
        print(f"Category color: {category.Color}")

さらに、フォルダー内のメッセージを反復処理し、カテゴリ名に基づいて対応するカテゴリカラーを取得することで、特定のメッセージに関連付けられたカテゴリカラーを取得できます。

for msg in olm.EnumerateMessages(folder):
    if msg.Categories is not None:
        for msgCategory in msg.Categories:
            print(f"Category name: {msgCategory}")
            categoryColor = next((c.Color for c in categories if c.Name.lower() == msgCategory.lower()), None)
            if categoryColor is not None:
                print(f"Category color: {categoryColor}")