次の方法で共有


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

名前空間: 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"
      }
    }
  ]
}