Outlook メッセージを整理する

Outlook を利用することによりユーザーは、自分の好みの方法でメッセージを整理できます。同じ受信トレイ フォルダーに全メッセージを入れたままにしたり、受信トレイの下に各自の必要に合うようなフォルダーのツリー構造を作成してその中にメッセージを分類保存したりできます。 ユーザーのメールボックス全体または特定のフォルダー内のメッセージに対してフィルター処理、検索、またはソートを便利に実行することができます。

メール フォルダーにアクセスする

プログラム的には、メッセージ フォルダーは mailFolder リソースによって表されており、受信トレイはフォルダー構造のルートにあるフォルダーの 1 つに含まれています。

mailFolder は、そのフォルダー ID によって識別され、書き込み可能な displayName プロパティがあります。 既定では、それ以外にいくつかのフォルダーが、Outlook によりユーザーのために作成されます。 それらの既定フォルダーは、フォルダー ID により参照するか、または既知の名前によって参照できます。 使用可能な既知のフォルダー名の一覧については、「mailFolder リソースの種類」を参照してください。

既定以外のカスタム フォルダーの場合、そのフォルダー パスがわかっている場合は、まず /users/{id}/mailfolders ショートカットを使用してルート レベルを取得したり最上位レベルのすべてのフォルダーを取得したりして、フォルダーにアクセスできます:

GET https://graph.microsoft.com/v1.0/users/{id}/mailFolders

その後、フォルダー ツリーの各レベルに移動する際に、該当するフォルダー ID ({folder_id}) を指定します:

GET https://graph.microsoft.com/v1.0/users/{id}/mailFolders/{folder_id}/childfolders

最終的にツリー内のカスタム フォルダーに達するまで繰り返します。

フォルダー ツリーを作成して整理する

受信トレイの下にメール フォルダーを作成したり他のフォルダーの子フォルダーとして作成したりすることができます。 フォルダーとその内容を作成、コピー、または移動する際、Outlook は、関係するフォルダーの読み取り専用の parentFolderId および childFolderCount のプロパティを更新します。 フォルダーの内容が別のフォルダーにコピーされたり移動したりする際には、既定ではその内容である個々のエントリ ID も変化します。

内容のレベルで、totalItemCount および unreadItemCount は、メール フォルダー内のアイテム数と未読アイテム数をそれぞれ示します。 子フォルダーのレベルでは、受信トレイまたは他のフォルダーの下の子フォルダーのリストを取得することができます。 childFolderCount プロパティは、直下の子フォルダーの数を表します。

Outlook メール フォルダーには、メッセージと共に、イベントや連絡先などのメッセージ以外のアイテムも含めることができることに注意してください。 一般に Outlook フォルダーでは、異なるアイテムが混在可能です。

メッセージのコピーまたは移動を自動化するためのルールの使用

Outlook を使用することによりユーザーは、事前に決められた条件が満たされた時点で、受信メッセージに対して特定のアクションを自動化するためのルールを設定できます。 特定の条件が満たされた場合に、メッセージを特定のフォルダーにコピーまたは移動するには、messageRule として受信トレイのルールを作成することができます。 条件は、messageRulePredicates です。 それには、特定のテキストが含まれるメッセージの件名または本文、特定のメール アドレスから送信されたメッセージ、重要マークが付けられたメッセージなどがあります。

気になるメッセージだけを優先受信トレイに入れる

優先受信トレイを使用すると、ユーザーは、[優先] タブで指定する送信元からの受信メッセージのみを表示し、[その他] タブで指定するものを残りのメッセージとするように Outlook に指示することができます。最初、Outlook の分類システムでは、既定の方法で受信トレイのメッセージが整理されます。 時間が経過するにつれて、ユーザー インターフェイスまたはプログラムを介して、システムを修正し、学習させることができます。 優先受信トレイを使用すればするほど、どの受信メッセージを [優先] タブに表示することが望ましいかに関する分類システムの推論が向上していきます。

プログラムにより、メッセージinferenceClassification プロパティを更新して、メッセージを [優先] タブに入れるのか、それとも [その他] タブに入れるのかを指示できます。これは、特定のメッセージのための 1 回限りの指定です。 一方、特定の送信元からのメッセージが常に [優先] タブまたは [その他] タブに表示されるようにするには、Outlook 用の命令を設定することができます。 各命令は、送信元の名前、およびその送信元からのメッセージの保存先を常に focused または other として指定する inferenceClassificationOverride インスタンスです。 ユーザーの優先受信トレイのための各ユーザーの命令は、user オブジェクトの inferenceClassificationOverride インスタンスのコレクションとして保存されます。

アプリの中でメッセージとメール フォルダーを最新の状態に保つ

しばしばアプリでは、アプリのローカル ストアの中でユーザーのメール データを同期し、最新の状態に保つことが必要です。 Microsoft Graph を利用すれば、変更通知をサブスクライブでき、データが変化した場合に通知を受け取り、変更発生後なるべく早い時点で実際の変更内容についてクエリを実行することができます。

通知は webhooks により非同期に配信されるため、頻繁にポーリングするオーバーヘッドを回避できます。 ユーザーのメール データに対する追加、更新、または削除に関する変更通知をサブスクライブすることができます。 たとえば、特定のフォルダー (/me/mailFolders('{folderId'}')) のメッセージ、またはルート レベル (/me/messages) のメッセージのサブスクリプションを作成できます。 サブスクリプションでは、notificationUrl を指定します。これは、要求された種類の変更が発生した場合に、Microsoft Graph からアプリに通知される通知先となるものです。

ユーザーのメールボックスの初期同期を実行するには、まず メール フォルダーの差分クエリをルート レベルで実行することにより、すべてのメール フォルダーを同期し、次いで各フォルダー内のメッセージについての差分クエリを実行して、個々のメッセージを同期します。

通知ごとにリソース全体を読むことなく、変更のあったエンティティを正確に検出するには、差分クエリを使用して、自分にとって気になる変更を追跡し、それらの変更内容によりローカル ストアを同期することができます。 特定のフォルダー内のメッセージへの変更内容を追跡することができます。 また、ルート レベル (/me/mailfolders) にあるメール フォルダーに対する変更内容を追跡することもできます。

次の手順