Outlook REST API 使用の概要

ヒント

サンプルの REST 呼び出しを Graph エクスプローラーで試してみてください。 自分のアカウントまたはテスト用アカウントのいずれも使用できます。 API を一通り調べたら、この画面に戻り左側から対象となるプラットフォームを選択してください。 受信トレイからメッセージを取得する簡単なアプリケーションを作成する手順について説明します。

希望のプラットフォームがまだリストに表示されない場合は、このページを読み進んでください。 未加工の HTTP 要求を使用した同じ手順を説明します。

このガイドの目的は、Office 365 と Outlook.com で Outlook メール API を呼び出し、メッセージを送信するプロセスについて順を追って説明することです。 プラットフォーム専用のスタートガイドとは異なり、このガイドでは、OAuth と REST の要求と応答に焦点を当てています。 認証とメッセージの取得にアプリが使用する要求と応答を、順を追って説明します。

このチュートリアルはメール API の呼び出しに Microsoft Graph を使います。 Microsoft では、Outlook のメール、予定表、連絡先へのアクセスに Microsoft Graph を使用することをお勧めしています。 Graph エンドポイントで利用できない機能が必要な場合のみ、Outlook API を直接 (https://outlook.office.com/api から) 使用します。

このガイドの情報は、HTTP 要求を送信できるものであれば、言語やプラットフォームを問わずに実装できます。

認証で OAuth2 を使用する

メール API を呼び出すには、アプリに Microsoft ID プラットフォームからのアクセス トークンが必要です。 サポートされている OAuth 2.0 フローのいずれかを使用して、アクセス トークンを取得します。

メール API の呼び出し

アプリがアクセス トークンを取得すると、すべてのメール API を呼び出す準備が整います。 詳細については、「メール API リファレンス」を参照してください。 このアプリはメッセージを取得するため、https://graph.microsoft.com/v1.0/me/mailfolders/inbox/messages URL に対する HTTP GET 要求を使用します。 これにより、受信トレイからメッセージが取得されます。

要求を絞り込む

アプリでは、OData クエリ パラメーターを使用して GET 要求の動作を制御できます。 アプリがこれらのパラメーターを使用して、返される結果の数と、各項目に返されるフィールドの数を制限することをお勧めします。 1 つの例を見てみましょう。

メッセージをテーブルで表示するアプリケーションについて考えます。 テーブルには、件名、送信者、メッセージ受信の日付、時刻のみが表示されます。 表には最大 25 行が表示され、最新の受信メッセージが上位にくるように並べ替えられます。

この機能を実現するため、アプリでは次のクエリ パラメーターを使用します。

  • $select パラメーターを使用して、subjectfrom、および receivedDateTime フィールドのみを指定しています。
  • $top パラメーターを使用して、最大 25 項目を指定しています。
  • $orderby パラメーターを使用して、receivedDateTime フィールドで結果を並べ替えます。

これにより、次の要求が行われます。

受信トレイ内のメッセージのメール API 要求

GET https://graph.microsoft.com/v1.0/me/mailfolders/inbox/messages?$select=subject,from,receivedDateTime&$top=25&$orderby=receivedDateTime%20DESC

Accept: application/json
Authorization: Bearer eyJ0eXAi...b66LoPVA

メール API 応答

HTTP/1.1 200 OK
Content-Type: application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(...)/mailfolders('inbox')messages(subject,from,receivedDateTime)",
  "value": [
    {
      "@odata.etag": "W/\"CQAAABYAAAAoPBSqxXQOT6tuE0pxCMrtAABufX4i\"",
      "id": "AAMkADRmMDExYzhjLWYyNGMtNDZmMC1iZDU4LTRkMjk4YTdjMjU5OABGAAAAAABp4MZ-5xP3TJnNAPmjsRslBwAoPBSqxXQOT6tuE0pxCMrtAAAAAAEMAAAoPBSqxXQOT6tuE0pxCMrtAABufW1UAAA=",
      "subject": "Ruby on Rails tutorial",
      "from": {
        "emailAddress": {
          "address": "jason@contoso.onmicrosoft.com",
          "name": "Jason Johnston"
        }
      },
      "receivedDateTime": "2015-01-29T20:44:53Z"
    },
    {
      "@odata.etag": "W/\"CQAAABYAAAAoPBSqxXQOT6tuE0pxCMrtAABSzmz4\"",
      "id": "AAMkADRmMDExYzhjLWYyNGMtNDZmMC1iZDU4LTRkMjk4YTdjMjU5OABGAAAAAABp4MZ-5xP3TJnNAPmjsRslBwAoPBSqxXQOT6tuE0pxCMrtAAAAAAEMAAAoPBSqxXQOT6tuE0pxCMrtAABMirSeAAA=",
      "subject": "Trip Information",
      "from": {
        "emailAddress": {
          "address": "jason@contoso.onmicrosoft.com",
          "name": "Jason Johnston"
        }
      },
      "receivedDateTime": "2014-12-09T21:55:41Z"
    },
    {
      "@odata.etag": "W/\"CQAAABYAAAAoPBSqxXQOT6tuE0pxCMrtAABzxiLG\"",
      "id": "AAMkADRmMDExYzhjLWYyNGMtNDZmMC1iZDU4LTRkMjk4YTdjMjU5OABGAAAAAABp4MZ-5xP3TJnNAPmjsRslBwAoPBSqxXQOT6tuE0pxCMrtAAAAAAEMAAAoPBSqxXQOT6tuE0pxCMrtAABAblZoAAA=",
      "subject": "Multiple attachments",
      "from": {
        "emailAddress": {
          "address": "jason@contoso.onmicrosoft.com",
          "name": "Jason Johnston"
        }
      },
      "receivedDateTime": "2014-11-19T20:35:59Z"
    },
    {
      "@odata.etag": "W/\"CQAAABYAAAAoPBSqxXQOT6tuE0pxCMrtAAA9yBBa\"",
      "id": "AAMkADRmMDExYzhjLWYyNGMtNDZmMC1iZDU4LTRkMjk4YTdjMjU5OABGAAAAAABp4MZ-5xP3TJnNAPmjsRslBwAoPBSqxXQOT6tuE0pxCMrtAAAAAAEMAAAoPBSqxXQOT6tuE0pxCMrtAAA9x_8YAAA=",
      "subject": "Attachments",
      "from": {
        "emailAddress": {
          "address": "jason@contoso.onmicrosoft.com",
          "name": "Jason Johnston"
        }
      },
      "receivedDateTime": "2014-11-18T20:38:43Z"
    }
  ]
}

これで、Mail API を呼び出す方法を確認したので、API 参照を使用して、アプリで行う必要がある他の種類の呼び出しを構築できます。 ただし、アプリでは、呼び出しを行うための適切なアクセス許可をアプリ登録で設定する必要がある点に注意してください。