message: delta

命名空间:microsoft.graph

获取指定文件夹中已添加、删除或更新的邮件集。

对文件夹中的邮件的 delta 函数调用与 GET 请求相似,除了前者可通过在对其的一次或多次调用中正确应用 状态令牌查询该文件夹中的邮件的增量更改。通过此功能,你可以维护和同步本地存储的用户邮件,而无需每次都从服务器中获取整组邮件。

权限

要调用此 API,需要以下权限之一。要了解详细信息,包括如何选择权限的信息,请参阅权限

权限类型 权限(从最低特权到最高特权)
委派(工作或学校帐户) Mail.ReadBasic、Mail.Read、Mail.ReadWrite
委派(个人 Microsoft 帐户) Mail.ReadBasic、Mail.Read、Mail.ReadWrite
应用程序 Mail.ReadBasic.All、Mail.Read、Mail.ReadWrite

HTTP 请求

GET /me/mailFolders/{id}/messages/delta
GET /users/{id}/mailFolders/{id}/messages/delta

查询参数

跟踪邮件更改会引发一组对 delta 函数的一次或多次调用。如果要使用任意查询参数($deltatoken$skiptoken 除外),则必须在最初的 delta 请求中指定它。Microsoft Graph 自动将指定的任意参数编码为响应中提供的 @odata.nextLink@odata.deltaLink URL 的令牌部分。你只需预先指定任意所需查询参数一次。在后续的请求中,只需复制并应用以前响应中的 @odata.nextLink@odata.deltaLink URL,因为该 URL 已包含所需的编码参数。

查询参数 类型 说明
$deltatoken string 对同一个邮件集合之前的 delta 函数调用的 @odata.deltaLink URL 中返回的 状态令牌,指示该组更改跟踪的完成状态。将此令牌包含在对该集合的下一组更改追踪的首次请求中,并保存和应用整个 @odata.deltaLink URL。
$skiptoken string 对之前的 delta 函数调用的 @odata.nextLink URL 中返回的 状态令牌,指示同一个邮件集合中有进一步的更改需要追踪。

OData 查询参数

  • 像在任何 GET 请求中一样,你可以使用 $select 查询参数以仅指定获取最佳性能所需的属性。始终返回 id 属性。
  • 对于邮件,Delta 查询支持 $select$top$expand
  • 提供对 $filter$orderby 的有限支持:
    • 唯一支持的 $filter 表达式是 $filter=receivedDateTime+ge+{value}$filter=receivedDateTime+gt+{value}
    • 唯一支持的 $orderby 表达式是 $orderby=receivedDateTime+desc。如果不包含 $orderby 表达式,则不能保证返回顺序。
  • 不支持 $search

请求标头

名称 类型 说明
Authorization string Bearer {token}。必需。
Content-Type string application/json. Required.
Prefer string odata.maxpagesize={x}。可选。

响应

如果成功,此方法在响应正文中返回 200 OK 响应代码和 message 集合对象。

示例

请求

以下示例演示了如何执行单次 delta 函数调用,并将响应正文中的邮件最大数目限制为 2。

若要跟踪文件夹中的邮件更改,要执行一次或多次 delta 函数调用来获取上一次增量查询后的增量更改集。若要获取演示一组增量查询调用的示例,请参阅 获取文件夹中邮件的增量更改

GET https://graph.microsoft.com/v1.0/me/mailFolders/{id}/messages/delta
Prefer: odata.maxpagesize=2
响应

如果请求成功,响应将包含一个状态令牌,其为 skipToken
(位于 @odata.nextLink 响应头中)或 deltaToken(位于 @odata.deltaLink 响应头中)。它们分别指示应继续此组调用还是已获取该组的所有更改。

以下响应显示了 @odata.nextLink 响应头中的 skipToken

注意:为了提高可读性,可能缩短了此处显示的响应对象。

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

{
  "@odata.nextLink":"https://graph.microsoft.com/v1.0/me/mailfolders/{id}/messages/delta?$skiptoken={_skipToken_}",
  "value": [
    {
      "receivedDateTime": "datetime-value",
      "sentDateTime": "datetime-value",
      "hasAttachments": true,
      "internetMessageId": "internetMessageId-value",
      "subject": "subject-value",
      "body": {
        "contentType": "contentType-value",
        "content": "content-value"
      }
    }
  ]
}

另请参阅