メッセージを一覧表示する

名前空間: microsoft.graph

重要

Microsoft Graph の /beta バージョンの API は変更される可能性があります。 実稼働アプリケーションでこれらの API を使用することは、サポートされていません。 v1.0 で API を使用できるかどうかを確認するには、Version セレクターを使用します。

サインイン中のユーザーのメールボックス内のメッセージを取得します (削除済みアイテムと低優先メール フォルダーを含む)。

ページ サイズとメールボックスのデータに応じ、メールボックスから取得するメッセージは複数の要求を発生します。 ページ サイズの規定値は、10 件のメッセージです。 $top を使用して、1 - 1000 の範囲でページ サイズをカスタマイズします。

操作の応答時間を改善するには、$selectを使用して必要なプロパティを正確に指定します。以下の例 1 を参照してください。 特に大きなページ サイズを使用する必要がある場合は、$select$top の値を微調整します。それぞれが完全な応答ペイロードを持つ数百のメッセージがあるページを返すと、ゲートウェイ タイムアウト (HTTP 504) がトリガーされる可能性があるためです。

メッセージの次のページを取得するには、@odata.nextLinkで返される URL 全体を単に次のメッセージ要求に適用するだけです。 この URL は、最初の要求で指定された全てのクエリ パラメーターを含みます。

応答を操作するために@odata.nextLink URL から$skip 値を抽出しようとしないでください。 この API は$skip 値を使用し、メッセージの種類の項目のページを返すためにユーザーのメールボックス内で確認された全ての項目をカウントし続けます。 そのため、最初の要求の場合も$skip 値がページ サイズより大きくなる可能性があります。 詳細については、アプリで Microsoft Graph データをページングするを参照してください。

メッセージをフィルター処理し、サインインしているユーザーのメンションを含むメッセージのみを取得できます。 次のを参照してください。 既定では、 GET /me/messages 操作は mentions プロパティを返しません。 メッセージ内の$expand各メンションの詳細を検索するには、クエリ パラメーターを使用します。

別のユーザーのメール フォルダーからアプリがメッセージを取得するシナリオは 2 つあります。

  • アプリにアプリケーションのアクセス許可がある場合。または
  • あるユーザーからアプリに適切な代理アクセス許可が与えられ、別のユーザーがそのユーザーとメール フォルダーを共有しているか、そのユーザーに代理アクセスを付与している場合。 詳細と例を参照してください。

この API は、次の国内クラウド展開で使用できます。

グローバル サービス 米国政府機関 L4 米国政府機関 L5 (DOD) 21Vianet が運営する中国

アクセス許可

この API の最小特権としてマークされているアクセス許可またはアクセス許可を選択します。 アプリで必要な場合にのみ、より高い特権のアクセス許可またはアクセス許可を使用します。 委任されたアクセス許可とアプリケーションのアクセス許可の詳細については、「 アクセス許可の種類」を参照してください。 これらのアクセス許可の詳細については、 アクセス許可のリファレンスを参照してください

アクセス許可の種類 最小特権アクセス許可 特権の高いアクセス許可
委任 (職場または学校のアカウント) Mail.ReadBasic Mail.ReadWrite、Mail.Read
委任 (個人用 Microsoft アカウント) Mail.ReadBasic Mail.ReadWrite、Mail.Read
アプリケーション Mail.ReadBasic.All Mail.ReadWrite、Mail.Read

HTTP 要求

ユーザーのメールボックス内のすべてのメッセージを取得する

GET /me/messages
GET /users/{id | userPrincipalName}/messages

ユーザーのメールボックス内の特定のフォルダーにあるメッセージを取得する

GET /me/mailFolders/{id}/messages
GET /users/{id | userPrincipalName}/mailFolders/{id}/messages

ユーザーのメンションを含むユーザーのメールボックス内のすべてのメッセージを取得するには:

GET /me/messages?$filter=mentionsPreview/isMentioned eq true
GET /users/{id | userPrincipalName}/messages?$filter=mentionsPreview/isMentioned eq true

オプションのクエリ パラメーター

このメソッドは、応答をカスタマイズするための OData クエリ パラメーターをサポートします。

mentionsPreview プロパティの$filterクエリ パラメーターを使用して、サインインしているユーザーメンションメッセージを取得できます。

同じクエリで filter と orderby を使用する

同じクエリで $filter$orderby を使用してメッセージを取得する場合、次の方法でプロパティを指定します。

  1. $orderby に表示されるプロパティは、$filter にも表示される必要があります。
  2. $orderby に表示されるプロパティは、$filter と同じ順序です。
  3. $orderby に存在するプロパティは、存在しないプロパティの前に $filter に表示されます。

これを実行しない場合、次のエラーが発生する可能性があります。

  • エラー コード: InefficientFilter
  • エラー メッセージ: The restriction or sort order is too complex for this operation.

要求ヘッダー

名前 説明
Authorization string ベアラー {token}。 必須です。
Prefer: outlook.body-content-type string body プロパティと uniqueBody プロパティが返されるときの形式です。 値は、"text" または "html" になります。 ヘッダーが指定されていない場合は、body プロパティと uniqueBody プロパティは HTML 形式で返されます。 省略可能。

要求本文

このメソッドには、要求本文を指定しません。

応答

成功した場合、このメソッドは 200 OK 応答コードと応答本文内の メッセージ オブジェクトのコレクションを返します。

例 1: すべてのメッセージを一覧表示する

要求

最初の例では、サインインしているユーザーのメールボックス内の既定の上位 10 個のメッセージを取得します。 $select を使用し、応答にメッセージごとのプロパティのサブセットを返します。

GET https://graph.microsoft.com/beta/me/messages?$select=sender,subject

応答

次の例は応答を示しています。 メッセージの次のページを取得するには、@odata.nextLinkで返されるURL を後続の Get 要求に適用します。

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('bb8775a4-4d8c-42cf-a1d4-4d58c2bb668f')/messages(sender,subject)",
  "value": [
    {
      "@odata.etag": "W/\"CQAAABYAAADHcgC8Hl9tRZ/hc1wEUs1TAAAwR4Hg\"",
      "id": "AAMkAGUAAAwTW09AAA=",
      "subject": "You have late tasks!",
      "sender": {
        "emailAddress": {
          "name": "Microsoft Planner",
          "address": "noreply@Planner.Office365.com"
        }
      }
    }
  ]
}

例 2: $filterを使用して、特定の条件を満たすすべてのメッセージを取得する

要求

次の例では、サインインしているユーザーのメールボックス内のすべてのメッセージを、ユーザーメンションするメッセージに対してフィルター処理します。 また、 を使用 $select して、応答内の各メッセージのプロパティのサブセットを返します。

次の例では、クエリ パラメーター文字列の空白文字の URL エンコードも組み込まれています。

GET https://graph.microsoft.com/beta/me/messages?$filter=MentionsPreview/IsMentioned%20eq%20true&$select=Subject,Sender,ReceivedDateTime,MentionsPreview

応答

次の例は応答を示しています。

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.context":"https://graph.microsoft.com/beta/$metadata#me/messages(subject,sender,receivedDateTime,mentionsPreview)",
  "value":[
    {
      "@odata.id":"https://graph.microsoft.com/beta/users('266efe5a-0fd7-4edd-877b-b2d1e561f193@ae01a323-3934-4475-a32d-af1274312bb0')/messages('AQMkADJmMTUAAAgVZAAAA')",
      "@odata.etag":"W/\"CQAAABYAAAAPFhK2FclcRbABBJhCde8iAAAAAATI\"",
      "id":"AQMkADJmMTUAAAgVZAAAA",
      "receivedDateTime":"2016-07-21T07:40:21Z",
      "subject":"Re: Start planning soon",
      "sender":{
        "emailAddress":{
          "name":"Adele Vance",
          "address":"AdeleV@contoso.com"
        }
      },
      "mentionsPreview":{
        "isMentioned":true
      }
    }
  ]
}

例 3: メッセージ本文を取得するには prefer ヘッダーを使用し、uniqueBody はテキスト形式

要求

3 番目の例は、ヘッダーを Prefer: outlook.body-content-type="text" 使用して、各メッセージの 本文uniqueBody プロパティをテキスト形式で取得する方法を示しています。

GET https://graph.microsoft.com/beta/me/messages?$select=subject,body,bodyPreview,uniqueBody
Prefer: outlook.body-content-type="text"

応答

次の例は応答を示しています。

HTTP/1.1 200 OK
Content-type: application/json

{
  "@odata.context":"https://graph.microsoft.com/beta/$metadata#users('cd209b0b-3f83-4c35-82d2-d88a61820480')/messages(subject,body,bodyPreview,uniqueBody)",
  "value":[
    {
      "@odata.type":"#microsoft.graph.eventMessageRequest",
      "@odata.etag":"W/\"CwAAABYAAABmWdbhEgBXTophjCWt81m9AAAoZYj5\"",
      "id":"AAMkAGIAAAoZCfIAAA=",
      "subject":"Orientation ",
      "bodyPreview":"Dana, this is the time you selected for our orientation. Please bring the notes I sent you.",
      "body":{
        "contentType":"text",
        "content":"Dana, this is the time you selected for our orientation. Please bring the notes I sent you.\r\n"
      },
      "uniqueBody":{
        "contentType":"text",
        "content":"Dana, this is the time you selected for our orientation. Please bring the notes I sent you.\r\n"
      }
    }
  ]
}