Outlook 邮件 REST API 的参考 (版本 2.0)

适用于:Exchange Online | Office 365 | Hotmail.com | Live.com | MSN.com | Outlook.com | Passport.com

Outlook 邮件 API 允许你阅读、创建和发送消息和附件,查看和响应事件消息,并管理由 Office 365 中的 Azure Active Directory 保护的文件夹。 它还提供相同的功能给特定于以下域中的 Microsoft 帐户:Hotmail.com、Live.com、MSN.com、Outlook.com 和 Passport.com。

备注

为简便起见,本文的其余部分使用 Outlook.com 来指代这些 Microsoft 帐户域。

对 API 的 2.0 版不感兴趣? 在左侧的目录中,转到 Office 365 REST API 参考部分,然后选择所需的版本。

所有“邮件 API”操作

邮件操作

消息存储在邮箱文件夹中,因此消息端点通常包含该消息的文件夹。 文件夹由 ID 或已知文件夹名称来指定,如 InboxDraftsSentItems,或 DeletedItems

文件夹操作

邮箱文件夹可以包含邮件和其他文件夹。 你可以获取、创建、改变、删除和管理文件夹。 你可以使用以下知名文件夹名而不是 ID 来指定相应的文件夹: InboxSentItemsDrafts、 或者 DeletedItems

另请参阅

使用“邮件 REST API”

身份验证

像其他 Outlook REST API 那样,对于邮件 API 的每个请求,都应该包含有效的访问令牌。 获取访问令牌需要注册和识别应用,并获得相应的授权。

你可以 了解更多 有关简化注册和授权选项的信息。 在 邮件 API 中继续执行特定操作时,请记住这一点。

API 版本

Outlook REST API 的所有版本都支持“邮件 REST API”。 功能可能因具体版本而异。

目标用户

除非指定,否则所有“邮件 API”请求均代表登录用户执行。 如果有适当的权限,可以在登录用户或用户 ID 指定的用户上执行如“重点收件箱 API”之类的一些 API 子集。

有关 Outlook REST API 所有子集所共有的更多信息,请参阅 使用 Outlook REST API

获取消息

你可以从邮箱文件夹中获取消息集合或单条消息。

响应中的每条消息都包含多个属性,包括 正文 属性。 邮件正文可以是文本或 HTML。 如果正文是 HTML 格式,默认情况下,在 REST 响应中返回正文内容之前,将删除嵌入 正文 属性中的任意具有潜在不安全性的 HTML(例如,JavaScript)。

要获取整个原始 HTML 内容,请包括以下 HTTP 请求标头:

Prefer: outlook.allow-unsafe-html

要指定 GET 请求的 正文UniqueBody 的属性中所返回的所需格式,使用该 Prefer: outlook.body-content-type 标头:

  • 指定 Prefer: outlook.body-content-type="text" 获取以文本格式返回的邮件正文。
  • 指定 Prefer: outlook.body-content-type="html",或者直接跳过标头,以 HTML 格式返回邮件正文。

如果你指定了任一标头,则响应将包含相应的 Preference-Applied 标头作为确认:

  • 对于文本格式请求: Preference-Applied: outlook.body-content-type="text"
  • 对于 HTML 格式请求: Preference-Applied: outlook.body-content-type="html"

获取消息集合

最低要求的范围

以下各项之一:

备注

本节中的操作行为因版本而异。 选择左侧的目录中 Office 365 REST API 引用 下的版本以了解更多详情。

从登录用户的整个邮箱(包括“已删除项”和“杂文”文件夹)中获取消息集合。

GET https://outlook.office.com/api/v2.0/me/messages

你还可以在用户的​​邮箱中指定一个文件夹并从那个文件夹中获取消息集合。

GET https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}/messages
必需的参数 类型 说明
URL 参数
folder_id 字符串 文件夹 ID 或 InboxDraftsSentItems、或者 DeletedItems 已知文件夹名(如果你正在从特定文件夹中收到消息)。 指定 AllItems 将返回整个邮箱的所有消息

备注

默认情况下,响应中的每条消息都包含其所有属性。 使用 $select 只指定那些你需要的最佳性能的属性。 始终返回该 ID 属性。 请参阅 OData 查询参数 了解筛选、排序和分页参数。

以下示例显示如何使用 $select 指定在响应中仅返回每条消息的 发件人主题 属性。 请参阅 获取消息 中的示例响应,以了解当您不使用 $select 时为一个消息返回的完整属性列表。

示例请求

GET https://outlook.office.com/api/v2.0/me/MailFolders/sentitems/messages/?$select=Sender,Subject

示例响应

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders('sentitems')/Messages(Sender,Subject)",
    "value": [
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGI2TIzAAAA=')",
            "@odata.etag": "W/\"CQAAABYAAACd9nJ/tVysQos2hTfspaWRAAADTJqS\"",
            "Id": "AAMkAGI2TIzAAAA=",
            "Subject": "Meeting Notes",
            "Sender": {
                "EmailAddress": {
                    "Name": "Alex D",
                    "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
                }
            }
        },
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGI2TIy-AAA=')",
            "@odata.etag": "W/\"CQAAABYAAACd9nJ/tVysQos2hTfspaWRAAADTJqP\"",
            "Id": "AAMkAGI2TIy-AAA=",
            "Subject": "Contract Signing",
            "Sender": {
                "EmailAddress": {
                    "Name": "Alex D",
                    "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
                }
            }
        },
        {
            "@odata.type": "#Microsoft.OutlookServices.EventMessage",
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGI2TIy9AAA=')",
            "@odata.etag": "W/\"CwAAABYAAACd9nJ/tVysQos2hTfspaWRAAADTJqJ\"",
            "Id": "AAMkAGI2TIy9AAA=",
            "Subject": "Rob:Alex 1:1",
            "Sender": {
                "EmailAddress": {
                    "Name": "Alex D",
                    "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
                }
            }
        }
    ]
}

响应类型

请求的 消息 集合。

获取邮件

最低要求的范围

以下各项之一:

通过 ID 获取消息。

GET https://outlook.office.com/api/v2.0/me/messages/{message_id}
必需的参数 类型 说明
URL 参数
message_id 字符串 消息 ID。

示例请求

GET https://outlook.office.com/api/v2.0/me/messages/AAMkAGI2THVSAAA=

示例响应

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages/$entity",
    "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGI2THVSAAA=')",
    "@odata.etag": "W/\"CQAAABYAAACd9nJ/tVysQos2hTfspaWRAAADTIKz\"",
    "Id": "AAMkAGI2THVSAAA=",
    "CreatedDateTime": "2014-10-20T00:41:57Z",
    "LastModifiedDateTime": "2014-10-20T00:41:57Z",
    "ChangeKey": "CQAAABYAAACd9nJ/tVysQos2hTfspaWRAAADTIKz",
    "Categories": [],
    "ReceivedDateTime": "2014-10-20T00:41:57Z",
    "SentDateTime": "2014-10-20T00:41:53Z",
    "HasAttachments": true,
    "Subject": "Re: Meeting Notes",
    "Body": {
        "ContentType": "Text",
        "Content": "\n________________________________________\nFrom: Alex D\nSent: Sunday, October 19, 2014 5:28 PM\nTo: Katie Jordan\nSubject: Meeting Notes\n\nPlease send me the meeting notes ASAP\n"
    },
    "BodyPreview": "________________________________________\nFrom: Alex D\nSent: Sunday, October 19, 2014 5:28 PM\nTo: Katie Jordan\nSubject: Meeting Notes\n\nPlease send me the meeting notes ASAP",
    "Importance": "Normal",
    "ParentFolderId": "AAMkAGI2AAEMAAA=",
    "Sender": {
        "EmailAddress": {
            "Name": "Katie Jordan",
            "Address": "katiej@a830edad9050849NDA1.onmicrosoft.com"
        }
    },
    "From": {
        "EmailAddress": {
            "Name": "Katie Jordan",
            "Address": "katiej@a830edad9050849NDA1.onmicrosoft.com"
        }
    },
    "ToRecipients": [
        {
            "EmailAddress": {
                "Name": "Alex D",
                "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com"
            }
        }
    ],
    "CcRecipients": [],
    "BccRecipients": [],
    "ReplyTo": [],
    "ConversationId": "AAQkAGI2yEto=",
    "IsDeliveryReceiptRequested": false,
    "IsReadReceiptRequested": false,
    "IsRead": false,
    "IsDraft": false,
    "WebLink": "https://outlook.office365.com/owa/?ItemID=AAMkAGI2THVSAAA%3D&exvsurl=1&viewmodel=ReadMessageItem"
}

响应类型

请求的 消息

备注

默认情况下,响应包含指定消息的所有属性。 使用 $select 只指定那些你需要的最佳性能的属性。 始终返回该 ID 属性。 请参阅 OData 查询参数 了解筛选、排序和分页参数。

以下示例显示如何使用 $select 指定在响应中仅返回每条消息的 发件人主题 属性。

GET https://outlook.office.com/api/v2.0/me/messages/AAMkAGE1I5MTAAA=?$select=Sender,Subject

同步消息

最低要求的范围

以下各项之一:

你可以将本地数据存储与服务器上的消息同步。 消息同步是按文件夹操作,例如,您可以同步收件箱中的所有消息。 要同步文件夹层次结构中的消息,你需要分别同步每个文件夹。

该 API 既支持检索文件夹中所有消息的完全同步,又支持检索自上次完全同步以来发生更改的所有消息的增量同步。

同步邮件文件夹通常需要两个或更多的 GET 请求。 发出 GET 请求方法与你 获取消息 的方式很像,只是会包括某些请求标头,并在适当时包括 deltaTokenskipToken

请求标头

  • 你必须在所有同步请求中指定 Prefer: odata.track-changes 标头,但那些包含从上个同步请求返回的 skipToken 的请求除外。 在第一个响应中,查找 Preference-Applied: odata.track-changes 标头,在继续之前确认资源支持同步。

  • 你可以指定 Prefer: odata.maxpagesize={x} 标头来设置请求中返回的最大消息数。

下面是一轮典型的同步消息:

  1. 使用强制性 Prefer: odata.track-changes 标头发出初始 GET 请求。 对同步请求的初始响应始终返回 deltaToken。 (第二个 GET 请求和后续 GET 请求与第一个 GET 请求不同,不同之处在于该请求包括在前一个响应中收到的 deltaTokenskipToken。)

  2. 如果第一个响应返回 Preference-Applied: odata.track-changes 标头,你可以继续同步该文件夹。

  3. 进行第二次 GET 请求。 指定 Prefer: odata.track-changes 标头和从第一个 GET 返回的 deltaToken,以确定是否有任何其他消息。 第二个请求将返回其他消息,且如果有更多的消息可用,则返回 skipToken,如果最后一条消息已经同步,则返回 deltaToken(在这种情况下同步轮次完成,你可以停止)。

  4. 通过发送 GET 调用并包括前一次调用中返回的 skipToken,继续进行同步。 在再次使用 deltaToken 获取包含 @odata.deltaLink 标头的最终响应(指明同步已完成)时停止。

缓存这次完全同步轮次中收到的最后一个 delta 令牌。 使用它开始一次增量同步轮次。

这是一次增量同步轮次:

  1. 使用强制性 Prefer: odata.track-changes 标头和在完全同步轮次的最后响应中收到的缓存 deltaToken 来进行初始 GET 请求。

  2. 第二步和后续步骤遵循用于完全同步的模式。

在特定文件夹中同步消息

初始请求

GET https://outlook.office365.com/api/v2.0/me/MailFolders('{folder_id}')/messages

第二个请求,或后续轮次中的第一个请求

GET https://outlook.office365.com/api/v2.0/me/MailFolders('{folder_id}')/messages/?$deltaToken={delta_token}

同一轮次中的第三个或后续请求

如果前一个响应包含 skipToken,则请继续发送下一个同步请求。 在再次使用 @odata.deltaLink 获取一个包含 deltaToken 标头的响应时停止。

GET https://outlook.office365.com/api/v2.0/me/MailFolders('{folder_id}')/messages/?$skipToken={skip_token}
参数 类型 说明
标头参数
Prefer odata.track-changes 表示该请求是一个同步请求。 对于一个轮次中的前 2 个 GET 请求为必需。
Prefer odata.maxpagesize 设置要在每个响应中返回的消息数量。 可选。
URL 参数
folder_id 字符串 要进行同步的文件夹 ID 或 InboxDraftsSentItemsDeletedItems 已知文件夹名。 必需。
deltaToken 字符串 标识该文件夹上次同步请求的令牌。 它作为前一个同步响应中 @odata.deltaLink 值的一部分返回。 第二个 GET 请求所必需。
skipToken 字符串 表示有更多消息要下载的令牌。 如果在前一次同步响应中作为@odata.nextLink值的一部分返回,则是必需的。

默认情况下,同步将返回文件夹中的所有属性和所有消息。 使用 $select 查询表达式以只指定你需要获得最佳性能的属性。 始终返回该 ID 属性。

同步支持查询表达式 $select、$top、$expand。 对 $filter 和 $orderby 支持有限,而对 $search 则不支持。

  • 唯一支持的 $filter 表达式是“$filter=ReceivedDateTime+ge+{value}”或“$filter=ReceivedDateTime+gt+{value}”。
  • 唯一支持的 $orderby 表达式是“$orderby=ReceivedDateTime+desc”。 如果不包含 $orderby 表达式,则不能保证返回顺序。

请参阅 OData 查询参数 了解筛选、排序和分页参数。

响应类型

包含请求消息的集合和一个 deltaTokenskipToken,你用于从服务器请求其他消息数据页面以进行增量同步。

示例

以下示例显示对包含 7 条消息的特定文件夹进行同步的一系列请求。 第一个同步请求指定一次返回 2 条消息 (odata.maxpagesize 是 2 ),每条消息只有 发件人主题 属性。

  • 初始响应返回 2 条消息,deltaLinkdeltaToken
  • 第二个请求使用那个 deltaToken。 第二个响应返回 2 条消息, nextLinkskipToken
  • 要完成同步,第三个和第四个请求使用从上一个同步请求返回的 skipToken,直到第四个响应返回 deltaLinkdeltaToken,在这个情况下,这轮同步才完成。 保存 deltaToken 供下一轮同步使用。

示例:初始请求

GET https://outlook.office.com/api/v2.0/Me/MailFolders('AAMkAGI5MAAAwW-j-AAA=')/messages?$select=Subject,Sender HTTP/1.1
Prefer: odata.maxpagesize=2
Prefer: odata.track-changes

示例初始响应数据

初始响应包括 Preference-Applied: odata.track-changes 标头,表示这个文件夹支持同步。 响应还包括两条消息和一条 deltaToken

Preference-Applied: odata.track-changes

{
  "@odata.context":"https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders('AAMkAGI5MAAAwW-j-AAA%3D')/Messages(Subject,Sender)",
  "value":[
    {
      "@odata.id":"https://outlook.office.com/api/v2.0/Users('f97adce1-d718-4a0e-9af8-b10167e3a346@0d76cf04-f6a0-46cc-947b-d2e1bdd98d11')/Messages('AAMkAGI5MAAAwXADPAAA=')",
      "@odata.etag":"W/\"CQAAABYAAAA+Z5tnXBgBRpOasqS9T0shAAAwYS9+\"",
      "Id":"AAMkAGI5MAAAwXADPAAA=",
      "Subject":"Updates from All Company",
      "Sender":{
        "EmailAddress":{
          "Name":"Contoso Demo on Yammer",
          "Address":"noreply@yammer.com"
        }
      }
    },
    {
      "@odata.id":"https://outlook.office.com/api/v2.0/Users('f97adce1-d718-4a0e-9af8-b10167e3a346@0d76cf04-f6a0-46cc-947b-d2e1bdd98d11')/Messages('AAMkAGI5MAAAwXADVAAA=')",
      "@odata.etag":"W/\"CQAAABYAAAA+Z5tnXBgBRpOasqS9T0shAAAwYS+E\"",
      "Id":"AAMkAGI5MAAAwXADVAAA=",
      "Subject":"RE: Latin American Ad Campaign - XT Series",
      "Sender":{
        "EmailAddress":{
          "Name":"Alex Darrow",
          "Address":"AlexD@contoso.onmicrosoft.com"
        }
      }
    }
  ],
  "@odata.deltaLink":"https://outlook.office.com/api/v2.0/Me/MailFolders('AAMkAGI5MAAAwW-j-AAA=')/messages/?%24select=Subject%2cSender&%24deltatoken=MfzCBD5nm2dcGAFGk5qypL1PSyEAADFmX28BAAAA"
}

示例第二个请求

第二个请求指定了从以前的响应中返回的 deltaToken

GET https://outlook.office.com/api/v2.0/Me/MailFolders('AAMkAGI5MAAAwW-j-AAA=')/messages/?%24select=Subject%2cSender&%24deltatoken=MfzCBD5nm2dcGAFGk5qypL1PSyEAADFmX28BAAAA HTTP/1.1
Prefer: odata.maxpagesize=2
Prefer: odata.track-changes

示例第二个响应数据

第二个响应包括另外两个消息和一个 skipToken,表示文件夹中还有更多要同步的消息。

{
  "@odata.context":"https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders('AAMkAGI5MAAAwW-j-AAA%3D')/Messages(Subject,Sender)/$delta",
  "value":[
    {
      "@odata.id":"https://outlook.office.com/api/v2.0/Users('f97adce1-d718-4a0e-9af8-b10167e3a346@0d76cf04-f6a0-46cc-947b-d2e1bdd98d11')/Messages('AAMkAGI5MAAAwXADQAAA=')",
      "@odata.etag":"W/\"CQAAABYAAAA+Z5tnXBgBRpOasqS9T0shAAAwYS9/\"",
      "Id":"AAMkAGI5MAAAwXADQAAA=",
      "Subject":"International Launch Planning for XT2000",
      "Sender":{
        "EmailAddress":{
          "Name":"Engineering",
          "Address":"engineering@contoso.onmicrosoft.com"
        }
      }
    },
    {
      "@odata.id":"https://outlook.office.com/api/v2.0/Users('f97adce1-d718-4a0e-9af8-b10167e3a346@0d76cf04-f6a0-46cc-947b-d2e1bdd98d11')/Messages('AAMkAGI5MAAAwXADUAAA=')",
      "@odata.etag":"W/\"CQAAABYAAAA+Z5tnXBgBRpOasqS9T0shAAAwYS+D\"",
      "Id":"AAMkAGI5MAAAwXADUAAA=",
      "Subject":"RE: Latin American Ad Campaign - XT Series",
      "Sender":{
        "EmailAddress":{
          "Name":"Anne Wallace",
          "Address":"AnneW@contoso.onmicrosoft.com"
        }
      }
    }
  ],
  "@odata.nextLink":"https://outlook.office.com/api/v2.0/Me/MailFolders('AAMkAGI5MAAAwW-j-AAA=')/messages/?%24select=Subject%2cSender&%24skipToken=MfzCAj5nm2dcGAFGk5qypL1PSyEAADFmX28CAAAA"
}

示例第三个请求

第三个请求包括从以前的响应中返回的 skipToken

GET https://outlook.office.com/api/v2.0/Me/MailFolders('AAMkAGI5MAAAwW-j-AAA=')/messages/?%24select=Subject%2cSender&%24skipToken=MfzCAj5nm2dcGAFGk5qypL1PSyEAADFmX28CAAAA HTTP/1.1
Prefer: odata.maxpagesize=2

示例第三个响应数据

第三个响应返回另外两条信息和另一个 skipToken,表示文件夹中仍有要同步的消息。

{
  "@odata.context":"https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders('AAMkAGI5MAAAwW-j-AAA%3D')/Messages(Subject,Sender)/$delta",
  "value":[
    {
      "@odata.id":"https://outlook.office.com/api/v2.0/Users('f97adce1-d718-4a0e-9af8-b10167e3a346@0d76cf04-f6a0-46cc-947b-d2e1bdd98d11')/Messages('AAMkAGI5MAAAwXADTAAA=')",
      "@odata.etag":"W/\"CQAAABYAAAA+Z5tnXBgBRpOasqS9T0shAAAwYS+C\"",
      "Id":"AAMkAGI5MAAAwXADTAAA=",
      "Subject":"RE: Latin American Ad Campaign - XT Series",
      "Sender":{
        "EmailAddress":{
          "Name":"Pavel Bansky",
          "Address":"PavelB@contoso.onmicrosoft.com"
        }
      }
    },
    {
      "@odata.id":"https://outlook.office.com/api/v2.0/Users('f97adce1-d718-4a0e-9af8-b10167e3a346@0d76cf04-f6a0-46cc-947b-d2e1bdd98d11')/Messages('AAMkAGI5MAAAwXADSAAA=')",
      "@odata.etag":"W/\"CQAAABYAAAA+Z5tnXBgBRpOasqS9T0shAAAwYS+B\"",
      "Id":"AAMkAGI5MAAAwXADSAAA=",
      "Subject":"Latin American Ad Campaign - XT Series",
      "Sender":{
        "EmailAddress":{
          "Name":"Engineering",
          "Address":"engineering@contoso.onmicrosoft.com"
        }
      }
    }
  ],
  "@odata.nextLink":"https://outlook.office.com/api/v2.0/Me/MailFolders('AAMkAGI5MAAAwW-j-AAA=')/messages/?%24select=Subject%2cSender&%24skipToken=MfzCAj5nm2dcGAFGk5qypL1PSyEAADFmX28DAAAA"
}

示例第四个请求

第四个请求包括上一个响应中的 skipToken

GET https://outlook.office.com/api/v2.0/Me/MailFolders('AAMkAGI5MAAAwW-j-AAA=')/messages/?%24select=Subject%2cSender&%24skipToken=MfzCAj5nm2dcGAFGk5qypL1PSyEAADFmX28DAAAA HTTP/1.1
Prefer: odata.maxpagesize=2

第四和最终的响应示例数据

第四个响应返回文件夹中仅剩的消息和一个表示这个文件夹的同步已完成的 deltaToken。 保存 deltaToken 供这个文件夹的下一轮同步。

{
  "@odata.context":"https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders('AAMkAGI5MAAAwW-j-AAA%3D')/Messages(Subject,Sender)/$delta",
  "value":[
    {
      "@odata.id":"https://outlook.office.com/api/v2.0/Users('f97adce1-d718-4a0e-9af8-b10167e3a346@0d76cf04-f6a0-46cc-947b-d2e1bdd98d11')/Messages('AAMkAGI5MAAAwXADRAAA=')",
      "@odata.etag":"W/\"CQAAABYAAAA+Z5tnXBgBRpOasqS9T0shAAAwYS+A\"",
      "Id":"AAMkAGI5MAAAwXADRAAA=",
      "Subject":"Data sheets for the XT2000 ",
      "Sender":{
        "EmailAddress":{
          "Name":"Engineering",
          "Address":"engineering@contoso.onmicrosoft.com"
        }
      }
    }
  ],
  "@odata.deltaLink": "https://outlook.office365.com/api/v2.0/Me/MailFolders('AAMkAGI5MAAAwW-j-AAA=')/messages/?%24deltaToken=0_zCBD5nm2dcGAFGk5qypL1PSyEAADBb9RkEAAAA"
}

示例增量同步请求

第一个响应包括上次完全同步响应的 deltaToken

GET https://outlook.office.com/api/v2.0/Me/MailFolders('AAMkAGI5MAAAwW-j-AAA=')/messages/?%24select=Subject%2cSender&%24deltatoken=0_zCBD5nm2dcGAFGk5qypL1PSyEAADBb9RkEAAAA HTTP/1.1
Prefer: odata.maxpagesize=2
Prefer: odata.track-changes

对增量同步请求的响应包括对文件夹消息集的任何更改。

示例增量同步响应

响应显示对消息集进行了一项更改。 消息被删除。


{
  "@odata.context":"https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders('AAMkAGI5MAAAwW-j-AAA%3D')/Messages(Subject,Sender)/$delta",
  "value": [
        {
            "id": "Messages('AAMkAGY5MDFjNTQyLWI3NzItNGE4My04ZWE4LWQ4YmMwNTJkYTg1YwBGAAAAAAD7fYH1FVR1TayS78jtGGehBwDB1GgBNTpbT6Qe-PzdAR4YAh7cdimCAADwOTzPjXdMTKEex95TwbKkAACLEykWAAA=')",
            "reason": "deleted"
        }
    ]
,
  "@odata.deltaLink": "https://outlook.office365.com/api/beta/Me/MailFolders('AAMkAGI5MAAAwW-j-AAA=')/messages/?%24deltaToken=4_zRDV5nm2dcGAFGk5qypL1PSyEAADBb9RkEAAAA"
}

创建并发送消息

你可以即时发送新消息,或创建草稿消息,然后发送。 你可以在任何文件夹中创建草稿。

即时发送新消息

最低要求的范围

以下各项之一:

通过使用 SendMail 方法发送请求正文中提供的消息。 通过在 附件 集合属性中指定,你可以在同一个操作调用中包含一个或多个附件。 你还可以将消息保存在“已发送邮件”文件夹中。

POST https://outlook.office.com/api/v2.0/me/sendmail
必需的参数 类型 说明
正文参数
邮件 消息 要发送的消息。
SavetoSentItems boolean 指示是否将邮件保存在“已发送邮件”中。 默认值为 True

在请求正文中,使用必需的 ToRecipients 属性和任何可写的 消息 属性来指定 Message 参数。 只有为 false 时才需要 SaveToSentItems 参数。

示例请求

POST https://outlook.office.com/api/v2.0/me/sendmail

{
  "Message": {
    "Subject": "Meet for lunch?",
    "Body": {
      "ContentType": "Text",
      "Content": "The new cafeteria is open."
    },
    "ToRecipients": [
      {
        "EmailAddress": {
          "Address": "garthf@a830edad9050849NDA1.onmicrosoft.com"
        }
      }
    ],
    "Attachments": [
      {
        "@odata.type": "#Microsoft.OutlookServices.FileAttachment",
        "Name": "menu.txt",
        "ContentBytes": "bWFjIGFuZCBjaGVlc2UgdG9kYXk="
      }
    ]
  },
  "SaveToSentItems": "false"
}

示例响应

Status code: 202

创建草稿消息

最低要求的范围

以下各项之一:

创建新邮件的草稿。 草稿可以在任何文件夹中创建,也可以选择 更新 之后 发送。 要保存到草稿文件夹,请使用 /me/messages 快捷方式。

POST https://outlook.office.com/api/v2.0/me/messages
POST https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}/messages
必需的参数 类型 说明
URL 参数
folder_id 字符串 目标文件夹 ID,或者 InboxDrafts 已知文件夹的名称。

在请求正文中指定任何可写的 消息 属性。

示例请求

POST https://outlook.office.com/api/v2.0/me/MailFolders/inbox/messages
Content-Type: application/json

{
  "Subject": "Did you see last night's game?",
  "Importance": "Low",
  "Body": {
    "ContentType": "HTML",
    "Content": "They were <b>awesome</b>!"
  },
  "ToRecipients": [
    {
      "EmailAddress": {
        "Address": "katiej@a830edad9050849NDA1.onmicrosoft.com"
      }
    }
  ]
}

示例响应

Status code: 201

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGE0Mz7k0AAA=')",
  "@odata.etag": "W/\"CQAAABYAAAAmP1Ln1wcHRariNdTMGAO9AAAS0Ag5\"",
  "Id": "AAMkAGE0Mz7k0AAA=",
  "ChangeKey": "CQAAABYAAAAmP1Ln1wcHRariNdTMGAO9AAAS0Ag5",
  "Categories": [],
  "CreatedDateTime": "2014-10-18T20:06:51Z",
  "LastModifiedDateTime": "2014-10-18T20:06:51Z",
  "Subject": "Did you see last night's game?",
  "BodyPreview": "They were awesome!",
  "Body": {
    "ContentType": "HTML",
    "Content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n</head>\r\n<body>\r\nThey were <b>awesome</b>!\r\n</body>\r\n</html>\r\n"
  },
  "Importance": "Low",
  "HasAttachments": false,
  "ParentFolderId": "AAMkAGE0MAAEPAAA=",
  "From": null,
  "Sender": null,
  "ToRecipients": [
    {
      "EmailAddress": {
        "Address": "katiej@a830edad9050849NDA1.onmicrosoft.com",
        "Name": "Katie Jordan"
      }
    }
  ],
  "CcRecipients": [],
  "BccRecipients": [],
  "ReplyTo": [],
  "ConversationId": "AAQkAGE0Mpv2hisc=",
  "ReceivedDateTime": "2014-10-18T20:06:51Z",
  "SentDateTime": "2014-10-18T20:06:51Z",
  "IsDeliveryReceiptRequested": false,
  "IsReadReceiptRequested": false,
  "IsDraft": true,
  "IsRead": true
}

响应类型

草稿 消息

发送草稿消息

最低要求的范围

以下各项之一:

通过使用 发送 方法,发送 新消息草稿回复草稿全部答复草稿转发草稿。 然后消息保存在“已发送邮件”文件夹中。

POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/send
必需的参数 类型 说明
URL 参数
message_id 字符串 待发送草稿消息的 ID。

示例请求

POST https://outlook.office.com/api/v2.0/me/messages/AAMkAGE0Mz7k0AAA=/send

示例响应

Status code: 202

回复或全部答复消息

备注

本节中的操作行为因版本而异。 选择左侧的目录中 Office 365 REST API 引用 下的版本以了解更多详情。

你可以即时回复注释,也可以先创建回复草稿,然后更新并发送草稿。

你只能回复消息的发件人或一次回答所有收件人。

即时回复发件人

最低要求的范围

以下各项之一:

通过指定注释并使用 回复 方法来回复消息的发件人。 然后消息保存在“已发送邮件”文件夹中。

或者,如果你需要修改回复的任何 可更新的属性,你可以先 创建草稿回复消息更新 消息属性,然后 发送 回复。

POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/reply
必需的参数 类型 说明
URL 参数
message_id 字符串 要回复的消息 ID。
正文参数
注释 字符串 要包含的注释。可以为空字符串。

示例请求

POST https://outlook.office.com/api/v2.0/me/messages/AAMkAGE0Mz8DmAAA=/reply
Content-Type: application/json

{
  "Comment": "Sounds great! See you tomorrow."
}

示例响应

Status code: 202

即时全部答复

最低要求的范围

以下各项之一:

通过指定注释并使用 ReplyAll 方法来回复消息的所有收件人。 然后消息保存在“已发送邮件”文件夹中。

或者,如果你需要修改回复的任何 可更新属性,你可以先 创建草稿全部回复消息更新 消息属性,然后 发送 回复。

POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/replyall
必需的参数 类型 说明
URL 参数
message_id 字符串 要回复的消息 ID。
正文参数
注释 字符串 要包含的注释。可以为空字符串。

示例请求

POST https://outlook.office.com/api/v2.0/me/messages/AAMkAGE0MSz8DmAAA=/replyall
Content-Type: application/json

{
  "Comment": "Thanks for the heads up."
}

示例响应

Status code: 202

创建草稿回复消息

最低要求的范围

以下各项之一:

创建回复指定 消息 的草稿。 然后你可以 更新 草稿,将回复内容添加到 正文 属性,或更改其他 消息属性,或者仅 发送草稿。

POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/createreply
必需的参数 类型 说明
URL 参数
message_id 字符串 要回复的消息 ID。

示例请求

POST https://outlook.office.com/api/v2.0/me/messages/AAMkADA1MTAAAAqldOAAA=/createreply

示例响应

Status code: 201

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('86b6ceaf-57f7-4278-97c4-4da0a97f6cdb@70559e59-b378-49ea-8e53-07a3a3d27f5b')/Messages('AAMkADA1MTAAAH5JKoAAA=')",
  "@odata.etag": "W/\"CQAAABYAAADX8oL1Wa7jQbcPAHouCzswAAAH5/DO\"",
  "Id": "AAMkADA1MTAAAH5JKoAAA=",
  "CreatedDateTime": "2016-03-15T08:33:43Z",
  "LastModifiedDateTime": "2016-03-15T08:33:43Z",
  "ChangeKey": "CQAAABYAAADX8oL1Wa7jQbcPAHouCzswAAAH5/DO",
  "Categories": [ ],
  "ReceivedDateTime": "2016-03-15T08:33:43Z",
  "SentDateTime": "2016-03-15T08:33:43Z",
  "HasAttachments": false,
  "InternetMessageId": "<DM2PR00MB00571796B16132601E1F286CF7890@DM2PR00MB0057.namprd00.prod.outlook.com>",
  "Subject": "RE: Let's start a group",
  "Body": {
    "ContentType": "HTML",
    "Content": "<html>\r\n<body>Fanny, would you name the group if the project is approved, please?\r\n<b>From:</b> Fanny Downs<br>\r\n<b>Sent:</b> Friday, March 4, 2016 12:23:35 AM<br>\r\n<b>To:</b> Admin<br>\r\n<b>Subject:</b> Re: Let's start a group</font>\r\n<p>That's a great idea!<br>\r\n</body>\r\n</html>"
  },
  "BodyPreview": "Fanny, would you name the group if the project is approved, please?\r\n________________________________\r\nFrom: Fanny Downs\r\nSent: Friday, March 4, 2016 12:23:35 AM\r\nTo: Admin\r\nSubject: Re: Let's start a group\r\n\r\n\r\nThat's a gre",
  "Importance": "Normal",
  "ParentFolderId": "AQMkADA1MTAAAAIBDwAAAA==",
  "Sender": {
    "EmailAddress": {
      "Name": "Admin",
      "Address": "admin@contoso.onmicrosoft.com"
    }
  },
  "From": null,
  "ToRecipients": [
    {
      "EmailAddress": {
        "Name": "Fanny Downs",
        "Address": "fannyd@contoso.onmicrosoft.com"
      }
    }
  ],
  "CcRecipients": [ ],
  "BccRecipients": [ ],
  "ReplyTo": [ ],
  "ConversationId": "AAQkADA1MTVGjIwpLvWmGtIo-aFE=",
  "IsDeliveryReceiptRequested": false,
  "IsReadReceiptRequested": false,
  "IsRead": true,
  "IsDraft": true,
  "WebLink": "https://outlook.office.com/owa/?ItemID=AAMkADA1MTAAAH5JKoAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
  "MentionedMe": null,
  "AppliedHashtagsPreview": null,
  "LikesPreview": null,
  "MentionsPreview": null,
  "Mentioned": [ ],
  "InferenceClassification": "Focused",
  "UnsubscribeData": [ ],
  "UnsubscribeEnabled": false,
  "Flag": { "FlagStatus": "NotFlagged" }
}

响应类型

ToRecipientIsDraft、以及其他预填充的适当属性的草稿回复 消息

创建草稿全部回复消息

最低要求的范围

以下各项之一:

创建草稿以回复指定邮件的发件人和所有收件人。 然后你可以 更新 草稿,将回复内容添加到 正文,或更改其他 邮件属性,或者仅 发送 草稿。

POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/createreplyall
必需的参数 类型 说明
URL 参数
message_id 字符串 要回复的消息 ID。

示例请求

POST https://outlook.office.com/api/v2.0/me/messages/AAMkAGE0Mz8DmAAA=/createreplyall

示例响应

Status code: 201

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGE0Mz7k5AAA=')",
  "@odata.etag": "W/\"CQAAABYAAAAmP1Ln1wcHRariNdTMGAO9AAAS0AhF\"",
  "Id": "AAMkAGE0Mz7k5AAA=",
  "ChangeKey": "CQAAABYAAAAmP1Ln1wcHRariNdTMGAO9AAAS0AhF",
  "Categories": [],
  "CreatedDateTime": "2014-10-18T21:21:06Z",
  "LastModifiedDateTime": "2014-10-18T21:21:06Z",
  "Subject": "RE: Check out the new Office 365 APIs",
  "BodyPreview": "If the project gets approved, please decide on the name.\r\n_________________________________\r\nFrom: Alex D\r\nSent: Saturday, October 18, 2014 9:18:18 PM\r\nTo: Katie Jordan; Garth Fort\r\nSubj",
  "Body": {
    "ContentType": "HTML",
    "Content": "<html>\r\n...</html>\r\n"
  },
  "Importance": "Normal",
  "HasAttachments": false,
  "ParentFolderId": "AAMkAGE0MAAEPAAA=",
  "From": null,
  "Sender": {
    "EmailAddress": {
      "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
      "Name": "Alex D"
    }
  },
  "ToRecipients": [
    {
      "EmailAddress": {
        "Address": "katiej@a830edad9050849NDA1.onmicrosoft.com",
        "Name": "Katie Jordan"
      }
    },
    {
      "EmailAddress": {
        "Address": "garthf@a830edad9050849NDA1.onmicrosoft.com",
        "Name": "Garth Fort"
      }
    }
  ],
  "CcRecipients": [],
  "BccRecipients": [],
  "ReplyTo": [],
  "ConversationId": "AAQkAGE0M3HbTkEU=",
  "ReceivedDateTime": "2014-10-18T21:21:06Z",
  "SentDateTime": "2014-10-18T21:21:06Z",
  "IsDeliveryReceiptRequested": false,
  "IsReadReceiptRequested": false,
  "IsDraft": true,
  "IsRead": true
}

响应类型

ToRecipientIsDraft、以及其他预填充的适当属性的草稿回复 消息

转发新的或起草的消息

备注

本节中的操作行为因版本而异。 选择左侧的目录中 Office 365 REST API 引用 下的版本以了解更多详情。

你可以直接转发消息,也可以创建草稿转发消息,然后进行更新并发送。

直接转发消息

最低要求的范围

以下各项之一:

通过使用 转发 方法转发消息,也可以有选择地指定注释。 然后消息保存在“已发送邮件”文件夹中。

另外,如果你需要在要转发的消息中修改任何 可更新的属性,你可以先 创建一个转发消息草稿更新 消息属性,然后 发送 回复。

POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/forward
必需的参数 类型 说明
URL 参数
message_id 字符串 要转发的消息 ID。
正文参数
注释 字符串 要包含的注释。可以为空字符串。
ToRecipients (收件人) 集合 收件人列表

指定 注释 和请求正文中的 ToRecipients 参数。

示例请求

POST https://outlook.office.com/api/v2.0/me/messages/AAMkAGE0Mz8DmAAA=/forward
Content-Type: application/json

{
  "Comment": "FYI",
  "ToRecipients": [
    {
      "EmailAddress": {
        "Address": "katiej@a830edad9050849NDA1.onmicrosoft.com"
      }
    },
    {
      "EmailAddress": {
        "Address": "garthf@a830edad9050849NDA1.onmicrosoft.com"
      }
    }
  ]
}

示例响应

Status code: 202

创建草稿转发消息

最低要求的范围

以下各项之一:

创建草稿以转发指定邮件。 然后你可以 更新 草稿以将内容添加到 正文 或更改其他 消息属性,或者仅 发送 草稿。

POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/createforward
必需的参数 类型 说明
URL 参数
message_id 字符串 要转发的消息 ID。

示例请求

POST https://outlook.office.com/api/v2.0/me/messages/AAMkAGE0Mz8DmAAA=/createforward

示例响应

Status code: 201

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGE0Mz7k6AAA=')",
  "@odata.etag": "W/\"CQAAABYAAAAmP1Ln1wcHRariNdTMGAO9AAAS0AhG\"",
  "Id": "AAMkAGE0Mz7k6AAA=",
  "ChangeKey": "CQAAABYAAAAmP1Ln1wcHRariNdTMGAO9AAAS0AhG",
  "Categories": [],
  "CreatedDateTime": "2016-03-15T08:42:10Z",
  "LastModifiedDateTime": "2016-03-15T08:42:10Z",
  "Subject": "FW: Let's start a group",
  "BodyPreview": "Dana, just want to make sure you get this.\r\n________________________________\r\nFrom: Admin\r\nSent: Tuesday, March 15, 2016 6:47:54 AM\r\nTo: Fanny Downs; Randi Welch\r\nSubject: RE: Let's st",
  "Body": {
    "ContentType": "HTML",
    "Content": "<html>\r\n...</html>\r\n"
  },
  "Importance": "Normal",
  "HasAttachments": false,
  "ParentFolderId": "AAMkAGE0MAAEPAAA=",
  "From": null,
  "Sender": {
    "EmailAddress": {
      "Address": "'alexd@contoso.onmicrosoft.com'",
      "Name": "Alex D"
    }
  },
  "ToRecipients": [],
  "CcRecipients": [],
  "BccRecipients": [],
  "ReplyTo": [],
  "ConversationId": "AAQkAGE0M3HbTkEU=",
  "ReceivedDateTime": "2016-03-15T08:42:10Z",
  "SentDateTime": "2016-03-15T08:42:10Z",
  "IsDeliveryReceiptRequested": false,
  "IsReadReceiptRequested": false,
  "IsDraft": true,
  "IsRead": true
}

响应类型

IsDraft 和预先填充适当的属性的草稿转发 消息

更新消息

更改消息的可写属性并保存更改。

更新消息

最低要求的范围

以下各项之一:

更改草稿或现有 消息 上的可写属性。 只有你指定的属性才会更改。

PATCH https://outlook.office.com/api/v2.0/me/messages/{message_id}
必需的参数 类型 说明
URL 参数
message_id 字符串 要更新的消息 ID。

在请求正文中指定一个或多个可写 消息属性。

示例请求

PATCH https://outlook.office.com/api/v2.0/me/messages/AAMkAGE0Mz8S-AAA=
Content-Type: application/json

{
  "Categories": [
    "Orange category",
    "Green category"
  ],
  "IsRead": true
}

示例响应

Status code: 200

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGE0Mz8S-AAA=')",
  "@odata.etag": "W/\"CQAAABYAAAAmP1Ln1wcHRariNdTMGAO9AAAS0AIP\"",
  "Id": "AAMkAGE0Mz8S-AAA=",
  "ChangeKey": "CQAAABYAAAAmP1Ln1wcHRariNdTMGAO9AAAS0AIP",
  "Categories": [
    "Orange category",
    "Green category"
  ],
  "CreatedDateTime": "2014-10-17T17:12:15Z",
  "LastModifiedDateTime": "2014-10-19T03:24:35Z",
  "Subject": "Meeting notes from today",
  "BodyPreview": "See attached",
  "Body": {
    "ContentType": "HTML",
    "Content": "<html>\r\n...</html>\r\n"
  },
  "Importance": "Normal",
  "HasAttachments": true,
  "ParentFolderId": "AAMkAGE0MAAEMAAA=",
  "From": {
    "EmailAddress": {
      "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
      "Name": "Alex D"
    }
  },
  "Sender": {
    "EmailAddress": {
      "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
      "Name": "Alex D"
    }
  },
  "ToRecipients": [
    {
      "EmailAddress": {
        "Address": "katiej@a830edad9050849NDA1.onmicrosoft.com",
        "Name": "Katie Jordan"
      }
    }
  ],
  "CcRecipients": [],
  "BccRecipients": [],
  "ReplyTo": [],
  "ConversationId": "AAQkAGE0Mip-qvhs=",
  "ReceivedDateTime": "2014-10-17T17:12:15Z",
  "SentDateTime": "2014-10-17T17:12:12Z",
  "IsDeliveryReceiptRequested": false,
  "IsReadReceiptRequested": false,
  "IsDraft": false,
  "IsRead": true
}

响应类型

已更新的 消息

删除邮件

备注

删除消息时请小心。 已删除内容可能无法恢复。 要了解更多信息,请参阅 删除项目

删除消息

最低要求的范围

以下各项之一:

DELETE https://outlook.office.com/api/v2.0/me/messages/{message_id}
必需的参数 类型 说明
URL 参数
message_id 字符串 要删除的消息 ID。

示例请求

DELETE https://outlook.office.com/api/v2.0/me/messages/AAMkAGE0Mz8TBAAA=

示例响应

Status code: 204

移动或复制消息

你可以移动或复制消息到文件夹。

移动消息

最低要求的范围

以下各项之一:

将邮件移到文件夹。此操作会在目标文件夹中新建邮件副本。

POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/move
必需的参数 类型 说明
URL 参数
message_id 字符串 要移动的消息 ID。
正文参数
DestinationId 字符串 目标文件夹 ID,或者 InboxDraftsSentItemsDeletedItems 已知文件夹的名称。

示例请求

POST https://outlook.office.com/api/v2.0/me/messages/AAMkAGI2TIy-AAA=/move
Content-Type: application/json

{
  "DestinationId": "AAMkAGI2AAEJAAA="
}

示例响应

Status code: 201

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGE0MGz_vSAAA=')",
  "@odata.etag": "W/\"CQAAABYAAACd9nJ/tVysQos2hTfspaWRAAADTJqP\"",
  "Id": "AAMkAGI2shBhAAA=",
  "ChangeKey": "CQAAABYAAACd9nJ/tVysQos2hTfspaWRAAADTJqP",
  "Categories": [],
  "CreatedDateTime": "2014-10-20T00:13:21Z",
  "LastModifiedDateTime": "2014-10-20T00:13:23Z",
  "Subject": "Contract Signing",
  "BodyPreview": "There will be a detailed legal review of Project Falcon once the contract is ready.",
  "Body": {
    "ContentType": "Text",
    "Content": "There will be a detailed legal review of Project Falcon once the contract is ready."
  },
  "Importance": "Normal",
  "HasAttachments": false,
  "ParentFolderId": "AAMkAGI2AAEJAAA=",
  "From": {
    "EmailAddress": {
      "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
      "Name": "Alex D"
    }
  },
  "Sender": {
    "EmailAddress": {
      "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
      "Name": "Alex D"
    }
  },
  "ToRecipients": [
    {
      "EmailAddress": {
        "Address": "katiej@a830edad9050849NDA1.onmicrosoft.com",
        "Name": "Katie Jordan"
      }
    },
    {
      "EmailAddress": {
        "Address": "garthf@a830edad9050849NDA1.onmicrosoft.com",
        "Name": "Garth Fort"
      }
    }
  ],
  "CcRecipients": [],
  "BccRecipients": [],
  "ReplyTo": [],
  "ConversationId": "AAQkAGI2NGWgitxag=",
  "ReceivedDateTime": "2014-10-20T00:13:21Z",
  "SentDateTime": "2014-10-20T00:13:21Z",
  "IsDeliveryReceiptRequested": false,
  "IsReadReceiptRequested": false,
  "IsDraft": false,
  "IsRead": true
}

响应类型

已移动的 消息

复制消息

最低要求的范围

以下各项之一:

将邮件复制到文件夹。

POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/copy
必需的参数 类型 说明
URL 参数
message_id 字符串 要移动的消息 ID。
正文参数
DestinationId 字符串 目标文件夹 ID,或者 InboxDraftsSentItemsDeletedItems 已知文件夹的名称。

示例请求

POST https://outlook.office.com/api/v2.0/me/messages/AAMkAGI2TIy-AAA=/copy
Content-Type: application/json

{
  "DestinationId": "inbox"
}

示例响应

Status code: 201

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGE0Mz8TDAAA=')",
  "@odata.etag": "W/\"CQAAABYAAAAmP1Ln1wcHRariNdTMGAO9AAAS0AIS\"",
  "Id": "AAMkAGI2T8DtAAA=",
  "ChangeKey": "CQAAABYAAACd9nJ/tVysQos2hTfspaWRAAADTJqP",
  "Categories": [],
  "CreatedDateTime": "2014-10-20T00:13:21Z",
  "LastModifiedDateTime": "2014-10-20T00:13:23Z",
  "Subject": "Contract Signing",
  "BodyPreview": "There will be a detailed legal review of Project Falcon once the contract is ready.",
  "Body": {
    "ContentType": "Text",
    "Content": "There will be a detailed legal review of Project Falcon once the contract is ready."
  },
  "Importance": "Normal",
  "HasAttachments": false,
  "ParentFolderId": "AAMkAGE0MAAEMAAA=",
  "From": {
    "EmailAddress": {
      "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
      "Name": "Alex D"
    }
  },
  "Sender": {
    "EmailAddress": {
      "Address": "alexd@a830edad9050849NDA1.onmicrosoft.com",
      "Name": "Alex D"
    }
  },
  "ToRecipients": [
    {
      "EmailAddress": {
        "Address": "katiej@a830edad9050849NDA1.onmicrosoft.com",
        "Name": "Katie Jordan"
      }
    },
    {
      "EmailAddress": {
        "Address": "garthf@a830edad9050849NDA1.onmicrosoft.com",
        "Name": "Garth Fort"
      }
    }
  ],
  "CcRecipients": [],
  "BccRecipients": [],
  "ReplyTo": [],
  "ConversationId": "AAQkAGI2NGVhZTVlLTI1OGMtNDI4My1iZmE5LTA5OGJiZGEzMTc0YQAQAKjRc0YJSUBJpofjWgitxag=",
  "ReceivedDateTime": "2014-10-20T00:13:21Z",
  "SentDateTime": "2014-10-20T00:13:21Z",
  "IsDeliveryReceiptRequested": false,
  "IsReadReceiptRequested": false,
  "IsDraft": false,
  "IsRead": true
}

响应类型

消息的新副本。

管理重点收件箱

通过重点收件箱,你可以查看收件箱的 Focused 选项卡中的重要邮件和 Other 选项卡中的其余收件箱邮件。分类系统最初按照默认方式组织收件箱邮件。可以随着时间推移通过用户界面或以编程方式对系统进行更正和培训。使用地越多,系统越能更好地推断哪些传入邮件是重要的。

在编程级别,重点收件箱 REST API 可以处理指定用户的消息,并支持每个消息的 InferenceClassification 属性。 可能的值是 FocusedOther,这表明用户是否认为该消息分别更重要和更不重要。 要纠正和训练信息分类系统,请在消息级别使用 PATCH 操作在 InferenceClassification 属性上

重点收件箱 REST API 还允许你创建覆盖。 每个覆盖,都由一个表示 InferenceClassificationOverride 实例表示,是分类系统的指令,总是以一致的方式(即总是“重点”或总是“其他”)标明来自特定发件人的消息,而不管任何先前学习的方法。 你可以 创建获取更新删除 指定的用户的替代。 那个用户的替代,如果有的话,可以在一个 InferenceClassification 导航属性内访问,这是一个 InferenceClassificationOverride 实例的集合。 覆盖允许用户更多地控制传入消息的分类,并建立对分类系统的更大信任。

请注意,分类系统只会在收件箱中收到的消息中学习并应用分类。 其他文件夹中的消息默认为“重点”。 设置会影响到达收件箱的未来邮件的fu覆盖;覆盖不会修改包括收件箱在内的任何文件夹中现有消息的 InferenceClassification 属性。

对邮件分类系统进行培训

使用替代对每个发件人一致分类

更新消息分类

最低要求的范围

以下各项之一:

更改指定消息的 InferenceClassification 属性。 如果消息在收件箱中,则用户将在相应的 Focused 或者 Other 标签下看到那个消息。这种修正还会训练消息分类系统为指定用户定制未来的分类。

PATCH https://outlook.office.com/api/v2.0/me/messages('{message_id}')

PATCH https://outlook.office.com/api/v2.0/Users('{user_id}')/messages('{message_id}')
参数 类型 说明
URL 参数
message_id 字符串 待发送草稿消息的 ID。
user_id 字符串 用户的电子邮件地址。

响应类型

已更新的 消息

示例请求

这个示例把 InferenceClassification 属性更改成 Other 针对登录用户的指定消息。

PATCH https://outlook.office.com/api/v2.0/me/messages('AAMkADA1MTQBAAA=')

{
    "InferenceClassification": "Other"
}

示例响应

这里显示的响应对象显示已更新的 InferenceClassification 属性并为了简洁而截断。 实际的 PATCH 请求会返回消息的所有属性。

Status code: 200 OK

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages/$entity",
    "@odata.id": "https://outlook.office.com/api/v2.0/Users('86b6ceaf-57f7-4278-97c4-4da0a97f6cdb@70559e59-b378-49ea-8e53-07a3a3d27f5b')/Messages('AAMkADA1MTQBAAA=')",
    "@odata.etag": "W/\"CQAAABYAAADX8oL1Wa7jQbcPAHouCzswAAAffAsD\"",
    "Id": "AAMkADA1MTQBAAA=",
    "Importance": "Normal",
    "Sender": {
        "EmailAddress": {
            "Name": "Fanny Downs",
            "Address": "fannyd@adatum.onmicrosoft.com"
        }
    },
    "From": {
        "EmailAddress": {
            "Name": "Fanny Downs",
            "Address": "fannyd@adatum.onmicrosoft.com"
        }
    },
    "ToRecipients": [
        {
            "EmailAddress": {
                "Name": "Admin",
                "Address": "admin@adatum.onmicrosoft.com"
            }
        }
    ],
    "InferenceClassification": "Other"
}

为发件人创建覆盖

最低要求的范围

以下各项之一:

创建由 SMTP 地址识别的发件人的替代。将以后来自该 SMTP 地址的邮件一致归为替代中指定的类别。

备注

  • 如果已经存在具有相同 STMP 地址的覆盖,则用提供的值更新那个覆盖的 ClassifyAs名称 字段。
  • 基于唯一发件人的 SMTP 地址,邮箱支持的最大替代数目为 1000 个。
  • POST 操作仅支持一次创建一个替代。 要创建多个替代,你可以发送多个 POST 请求或 批量处理 它们。
POST https://outlook.office.com/api/v2.0/me/InferenceClassification/Overrides

POST https://outlook.office.com/api/v2.0/Users('{user_id}')/InferenceClassification/Overrides
参数 类型 说明
URL 参数
user_id 字符串 用户的电子邮件地址。

响应类型

新创建的 InferenceClassificationOverride 或更新的 InferenceClassificationOverride 实例是否已经存在具有相同 SMTP 地址的实例。

示例请求

POST https://outlook.office.com/api/v2.0/me/InferenceClassification/Overrides

{
    "ClassifyAs": "Focused",
    "SenderEmailAddress": {
        "Name": "Fanny Downs",
        "Address": "fannyd@adatum.onmicrosoft.com"
    }
}

示例响应

Status code: 201 Created

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/InferenceClassification/Overrides/$entity",
    "@odata.id": "https://outlook.office.com/api/v2.0/Users('86b6ceaf-57f7-4278-97c4-4da0a97f6cdb@70559e59-b378-49ea-8e53-07a3a3d27f5b')/InferenceClassificationOverrides('98f5bdef-576a-404d-a2ea-07a3cf11a9b9')",
    "Id": "98f5bdef-576a-404d-a2ea-07a3cf11a9b9",
    "ClassifyAs": "Focused",
    "SenderEmailAddress": {
        "Name": "Fanny Downs",
        "Address": "fannyd@adatum.onmicrosoft.com"
    }
}

获取所有用户替代

最低要求的范围

以下各项之一:

获取用户设置为始终以特定方式对来自特定发件人的邮件进行分类的替代。

每个替代均对应一个发件人的 SMTP 地址。最初,用户没有任何替代。

GET https://outlook.office.com/api/v2.0/me/InferenceClassification/Overrides

GET https://outlook.office.com/api/v2.0/Users('{user_id}')/InferenceClassification/Overrides
参数 类型 说明
URL 参数
user_id 字符串 用户的电子邮件地址。

响应类型

一个 InferenceClassificationOverride 实例的集合。 如果用户没有设置任何覆盖,则返回空的集合。

示例请求

GET https://outlook.office.com/api/v2.0/me/InferenceClassification/Overrides

示例响应

Status code: 200 OK

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/InferenceClassification/Overrides",
    "value": [
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('86b6ceaf-57f7-4278-97c4-4da0a97f6cdb@70559e59-b378-49ea-8e53-07a3a3d27f5b')/InferenceClassificationOverrides('98f5bdef-576a-404d-a2ea-07a3cf11a9b9')",
            "Id": "98f5bdef-576a-404d-a2ea-07a3cf11a9b9",
            "ClassifyAs": "Focused",
            "SenderEmailAddress": {
                "Name": "Fanny Downs",
                "Address": "fannyd@adatum.onmicrosoft.com"
            }
        },
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('86b6ceaf-57f7-4278-97c4-4da0a97f6cdb@70559e59-b378-49ea-8e53-07a3a3d27f5b')/InferenceClassificationOverrides('98f5bdef-576a-404d-a2ea-07a3cf34af4r')",
            "Id": "98f5bdef-576a-404d-a2ea-07a3cf34af4r",
            "ClassifyAs": "Other",
            "SenderEmailAddress": {
                "Name": "Randi Welch",
                "Address": "randiw@adatum.onmicrosoft.com"
            }
        }
    ]
}

为发件人更新覆盖

最低要求的范围

以下各项之一:

按指定内容更改覆盖的 ClassifyAs 字段。

不能在 InferenceClassificationOverride 实例中使用 PATCH 更改任何其他字段。

如果发件人的覆盖存在,并且发件人更改了他/她的显示名称,可以 使用 POST 强制更新现有覆盖中的名称字段

如果发件人的替代存在,并且发件人更改了他/她的 SMTP 地址,“更新”此发件人的替代的唯一方法是:删除 现有替代,然后使用新的 SMTP 地址 创建 新替代。

PATCH https://outlook.office.com/api/v2.0/me/InferenceClassification/Overrides('{override_id}')

PATCH https://outlook.office.com/api/v2.0/Users('{user_id}')/InferenceClassification/Overrides('{override_id}')
参数 类型 说明
URL 参数
override_id 字符串 要更新的覆盖 ID。
user_id 字符串 用户的电子邮件地址。

响应类型

更新的 InferenceClassificationOverride 实例。

示例请求

以下示例更改了登录用户的替代。 该覆盖是给带有 SMTP 地址 randiw@adatum.onmicrosoft.com 的发件人的,从 Other 更改为 Focused

PATCH https://outlook.office.com/api/v2.0/me/InferenceClassification/Overrides('98f5bdef-576a-404d-a2ea-07a3cf34af4r')

{
    "ClassifyAs": "Focused"
}

示例响应

Status code: 200 OK

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/InferenceClassification/Overrides/$entity",
    "@odata.id": "https://outlook.office.com/api/v2.0/Users('86b6ceaf-57f7-4278-97c4-4da0a97f6cdb@70559e59-b378-49ea-8e53-07a3a3d27f5b')/InferenceClassificationOverrides('98f5bdef-576a-404d-a2ea-07a3cf34af4r')",
    "Id": "98f5bdef-576a-404d-a2ea-07a3cf34af4r",
    "ClassifyAs": "Focused",
    "SenderEmailAddress": {
        "Name": "Randi Welch",
        "Address": "randiw@adatum.onmicrosoft.com"
    }
}

删除发件人替代

最低要求的范围

以下各项之一:

删除由其 ID 指定的替代。

DELETE https://outlook.office.com/api/v2.0/me/InferenceClassification/Overrides('{override_id}')

DELETE https://outlook.office.com/api/v2.0/Users('{user_id}')/InferenceClassification/Overrides('{override_id}')
参数 类型 说明
URL 参数
override_id 字符串 待发送草稿消息的 ID。
user_id 字符串 用户的电子邮件地址。

示例请求

DELETE https://outlook.office.com/api/v2.0/me/InferenceClassification/Overrides('98f5bdef-576a-404d-a2ea-07a3cf34af4r')

示例响应

Status code: 204 No Content

管理 @-Mentions(预览)

这个功能目前在 beta 版中可用。 要了解详细信息,请在左侧的目录中转到 Office 365 REST API 参考部分,并选择 beta

管理规则(预览)

这个功能目前在 beta 版中可用。 要了解详细信息,请在左侧的目录中转到 Office 365 REST API 参考部分,并选择 beta

取消订阅(预览)

这个功能目前在 beta 版中可用。 要了解详细信息,请在左侧的目录中转到 Office 365 REST API 参考部分,并选择 beta

获取语​​言选项(预览)

此功能目前只在 beta 版中可用。 要了解详细信息,请在左侧的目录中转到 Office 365 REST API 参考部分,并选择 beta

获取时区选项(预览)

此功能目前只在 beta 版中可用。 要了解详细信息,请在左侧的目录中转到 Office 365 REST API 参考部分,并选择 beta

获取邮箱设置

最低要求的范围

获取登录用户主邮箱的设置。 设置示例包括用户的首选语言和默认时区以及任何自动回复设置。

GET https://outlook.office.com/api/v2.0/me/MailboxSettings

响应类型

MailboxSettings

在所有邮箱设置中获取首选语言设置:

GET https://outlook.office.com/api/beta/me/MailboxSettings/Language

响应类型

LocaleInfo

在所有邮箱设置中获取首选时区设置:

GET https://outlook.office.com/api/beta/me/MailboxSettings/TimeZone

响应类型

以 Windows 时区格式表示首选时区的字符串。

你也可以 获取具体的自动回答设置

示例请求

以下示例获取登录用户的所有邮箱设置。

GET https://outlook.office.com/api/v2.0/me/MailboxSettings

示例响应

Status code: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailboxSettings",
    "AutomaticRepliesSetting": {
        "Status": "Scheduled",
        "ExternalAudience": "All",
        "ScheduledStartDateTime": {
            "DateTime": "2016-03-14T07:00:00.0000000",
            "TimeZone": "UTC"
        },
        "ScheduledEndDateTime": {
            "DateTime": "2016-03-28T07:00:00.0000000",
            "TimeZone": "UTC"
        },
        "InternalReplyMessage": "<html>\n<body>\n<p>I'm at our company's worldwide reunion and will respond to your message as soon as I return.<br>\n</p></body>\n</html>\n",
        "ExternalReplyMessage": "<html>\n<body>\n<p>I'm at the Contoso worldwide reunion and will respond to your message as soon as I return.<br>\n</p></body>\n</html>\n"
    },
    "TimeZone": "Pacific Standard Time",
    "Language":{
        "Locale":"en-US",
        "DisplayName":"English (United States)"
    }
}

获取自动回复设置

最低要求的范围

获取登录用户邮箱的自动回复设置。

自动回复允许你在向你发送电子邮件时自动通知消息人员。 例如,你可以在你没有空并且无法回复他们时通知他们。

由于自动回复是用户邮箱设置的一部分(以 MailboxSettings 表示),你可以通过获取所有邮箱设置,其中包括自动回复设置,或者通过获取具体的自动回复设置,来查看自动回复设置。

你可以使用 Prefer: outlook.timezone HTTP 标头来指定首选的时区,以显示 ScheduledStartDateTimeScheduledEndDateTime 的值。

GET https://outlook.office.com/api/v2.0/me/MailboxSettings/AutomaticRepliesSetting

响应类型

AutomaticRepliesSetting

示例请求

GET https://outlook.office.com/api/v2.0/me/MailboxSettings/AutomaticRepliesSetting

示例响应

Status code: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailboxSettings/AutomaticRepliesSetting",
    "Status": "AlwaysEnabled",
    "ExternalAudience": "None",
    "ScheduledStartDateTime": {
        "DateTime": "2016-03-19T02:00:00.0000000",
        "TimeZone": "UTC"
    },
    "ScheduledEndDateTime": {
        "DateTime": "2016-03-20T02:00:00.0000000",
        "TimeZone": "UTC"
    },
    "InternalReplyMessage": "<html>\n<body>\n<p>I'm at our company's worldwide reunion and will respond to your message as soon as I return.<br>\n</p></body>\n</html>\n",
    "ExternalReplyMessage": "<html>\n<body>\n<p>I'm at the Contoso worldwide reunion and will respond to your message as soon as I return.<br>\n</p></body>\n</html>\n"
}

更新自动回复设置

最低要求的范围

自动回复是用户邮箱设置的一部分(以 MailboxSettings 表示)。 你可以通过更新相应的邮箱设置来启用、配置或禁用自动回复。

备注

不能创建或删除任何邮箱设置。

PATCH https://outlook.office.com/api/v2.0/me/MailboxSettings

响应类型

MailboxSettings

示例请求

在获取自动回复设置 前面的示例 之后,下一个示例把 状态AlwaysEnabled 更改为 Scheduled,并将开始日期和结束日期更改为不同的日期范围。

PATCH https://outlook.office.com/api/v2.0/me/MailboxSettings
Content-Type: application/json

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailboxSettings",
    "AutomaticRepliesSetting": {
        "Status": "Scheduled",
        "ScheduledStartDateTime": {
          "DateTime": "2016-03-20T18:00:00.0000000",
          "TimeZone": "UTC"
        },
        "ScheduledEndDateTime": {
          "DateTime": "2016-03-28T18:00:00.0000000",
          "TimeZone": "UTC"
        }
    }
}

示例响应

Status code: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailboxSettings",
    "AutomaticRepliesSetting": {
        "Status": "Scheduled",
        "ExternalAudience": "None",
        "ScheduledStartDateTime": {
            "DateTime": "2016-03-20T02:00:00.0000000",
            "TimeZone": "UTC"
        },
        "ScheduledEndDateTime": {
            "DateTime": "2016-03-28T02:00:00.0000000",
            "TimeZone": "UTC"
        },
    "InternalReplyMessage": "<html>\n<body>\n<p>I'm at our company's worldwide reunion and will respond to your message as soon as I return.<br>\n</p></body>\n</html>\n",
    "ExternalReplyMessage": "<html>\n<body>\n<p>I'm at the Contoso worldwide reunion and will respond to your message as soon as I return.<br>\n</p></body>\n</html>\n"
    },
    "TimeZone": "Pacific Standard Time",
    "Language":{
        "Locale":"en-US",
        "DisplayName":"English (United States)"
    }
}

获取 MailTips(预览)

这个功能目前在 beta 版中可用。 要了解详细信息,请在左侧的目录中转到 Office 365 REST API 参考部分,并选择 beta

获取附件

你可以获取附件集合或获取附件。

获取附件集合

最低要求的范围

以下各项之一:

获取特定消息的附件。

GET https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments
必需的参数 类型 说明
URL 参数
message_id 字符串 消息 ID。

备注

默认情况下,响应中的每个附件都包含与该附件类型对应的所有属性。 使用 $select 只指定那些你需要的最佳性能的属性。 始终返回该 ID 属性。 请参阅 OData 查询参数 了解筛选、排序和分页参数。

响应类型

一个附件集合,其类型可以为 FileAttachmentItemAttachment

示例请求和响应

以下示例显示如何使用 $select 指定在响应中仅返回每个文件附件的 名称 属性。 请参阅 获取附件 中的示例回应,以了解当您不使用 $select 时为一个附件返回的完整属性列表。

示例请求

GET https://outlook.office.com/api/v2.0/me/messages/AAMkAGI2THVSAAA=/attachments?$select=Name

示例响应

Status code: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages('AAMkAGI2THVSAAA%3D')/Attachments(Name)",
    "value": [
        {
            "@odata.type": "#Microsoft.OutlookServices.FileAttachment",
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGI2THVSAAA=')/Attachments('AAMkAGI2j4kShdM=')",
            "Id": "AAMkAGI2j4kShdM=",
            "Name": "minutes.docx"
        }
    ]
}

以下示例显示获取 Outlook 邮件项目的唯一附件。 该响应包括附件 ID,该附件 ID 也是附加消息的 ID。

GET https://outlook.office.com/api/v2.0/me/messages('AAMkADFiNTPAAA=')/attachments

Content-Type: application/json

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages('AAMkADFiNTPAAA%3D')/Attachments",
  "value": [
    {
      "@odata.type": "#Microsoft.OutlookServices.ItemAttachment",
      "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-20075df800e5@1717622f-1d94-4d0c-9d74-f907ad6677b4')/Messages('AAMkADFiNTPAAA=')/Attachments('AAMkADFiNTAUhhYuYi0=')",
      "Id": "AAMkADFiNTAUhhYuYi0=",
      "Name": "How to retrieve item attachment using Outlook REST API",
      "ContentType": message/rfc822,
      "Size": 71094,
      "IsInline": false,
      "LastModifiedDateTime": "2015-09-24T05:57:59Z",
    }
  ]
}

获取附件

最低要求的范围

以下各项之一:

获取特定消息的附件

GET https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments/{attachment_id}

备注

请参阅 OData 查询参数 了解筛选、排序和分页参数。

必需的参数 类型 说明
URL 参数
message_id 字符串 消息 ID。
attachment_id 字符串 附件 ID。

备注

默认情况下,响应包含附件的所有属性。 使用 $select 只指定那些你需要的最佳性能的属性。 请参阅示例的 获取附件集合。 始终返回该 ID 属性。 请参阅 OData 查询参数 了解筛选、排序和分页参数。

响应类型

请求的 文件附件项目附件

示例请求

GET https://outlook.office.com/api/v2.0/me/messages/AAMkAGI2THVSAAA=/attachments/AAMkAGI2j4kShdM=

示例响应

Status code: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/Messages('AAMkAGI2THVSAAA%3D')/Attachments/$entity",
    "@odata.type": "#Microsoft.OutlookServices.FileAttachment",
    "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Messages('AAMkAGI2THVSAAA=')/Attachments('AAMkAGI2j4kShdM=')",
    "Id": "AAMkAGI2j4kShdM=",
    "LastModifiedDateTime": "2014-10-20T00:41:52Z",
    "Name": "minutes.docx",
    "ContentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
    "Size": 11585,
    "IsInline": false,
    "ContentId": null,
    "ContentLocation": null,
    "ContentBytes": "UEsDBBQABgAIAAAAIQDCAAA4KQAAAAA="
}

示例请求(参考附件)

以下示例获取消息的参考附件。

GET https://outlook.office.com/api/v2.0/me/messages/AAMkAGE1Mbs88AADUv0uFAAA=/attachments/AAMkAGE1Mbs88AADUv0uFAAABEgAQAPSg72tgf7hJp0PICVGCc0g=

示例响应

Status code: 200

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#users('ddfcd489-628b-40d7-b48b-57002df800e5')/messages('AAMkAGE1Mbs88AADUv0uFAAA%3D')/attachments/$entity",
  "@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
  "Id": "AAMkAGE1Mbs88AADUv0uFAAABEgAQAPSg72tgf7hJp0PICVGCc0g=",
  "LastModifiedDateTime": "2016-03-12T06:04:38Z",
  "Name": "Koala picture",
  "ContentType": null,
  "Size": 382,
  "IsInline": false,
  "SourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/koala.jpg",
  "ProviderType": "OneDriveBusiness",
  "ThumbnailUrl": null,
  "PreviewUrl": null,
  "Permission": "Edit",
  "IsFolder": false
}

示例请求(在附件上 $expand)

以下示例获取并展开与消息属性一致的所有 3 个参考附件。

GET https://outlook.office.com/api/v2.0/me/messages/AAMkAGE1Mbs88AADUv0uFAAA=/?$expand=attachments

示例响应

Status code: 200

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#users('ddfcd489-628b-40d7-b48b-57002df800e5')/messages/$entity",
  "@odata.etag": "W/\"CQAAABYAAACY4MQpaFz9SbqUDe4+bs88AADZsPav\"",
  "Id": "AAMkAGE1Mbs88AADUv0uFAAA=",
  "CreatedDateTime": "2016-03-08T01:01:57Z",
  "LastModifiedDateTime": "2016-03-12T06:18:54Z",
  "ChangeKey": "CQAAABYAAACY4MQpaFz9SbqUDe4+bs88AADZsPav",
  "Categories": [ ],
  "ReceivedDateTime": "2016-03-08T01:01:57Z",
  "SentDateTime": "2016-03-08T01:01:51Z",
  "HasAttachments": true,
  "InternetMessageId": "<SN2SR0101MB00299F0D7D22EE5D380104ED84B20@SN2SR0101MB0029.namsdf01.sdf.exchangelabs.com>",
  "Subject": "RE: New year activity",
  "Body": {
    "ContentType": "html",
    "Content": "<html>\r\n<<body>Let's gather to celebrate the new year! </body>\r\n</html>\r\n"
  },
  "BodyPreview": "What about the tulips?\r\n________________________________\r\nFrom: Dana Swope <danas@contoso.onmicrosoft.com>\r\nSent: Monday, March 7, 2016 10:51:39 PM\r\nTo: Dana Swope; Culinary Expert Group\r\nSubject: RE: New year activity\r\n\r\nLet's gather to celebrate the new year! ",
  "Importance": "Normal",
  "ParentFolderId": "AQMkAGE1MQN7j5uzzwAAAIBDAAAAA==",
  "Sender": {
    "EmailAddress": {
      "Name": "Dana Swope",
      "Address": "danas@contoso.onmicrosoft.com"
    }
  },
  "From": {
    "EmailAddress": {
      "Name": "Dana Swope",
      "Address": "danas@contoso.onmicrosoft.com"
    }
  },
  "ToRecipients": [
    {
      "EmailAddress": {
        "Name": "Dana Swope",
        "Address": "danas@contoso.onmicrosoft.com"
      }
    },
    {
      "EmailAddress": {
        "Name": "Culinary Expert Group",
        "Address": "Chefs@contoso.onmicrosoft.com"
      }
    }
  ],
  "CcRecipients": [ ],
  "BccRecipients": [ ],
  "ReplyTo": [ ],
  "ConversationId": "AAQkAGE1MMM2SaRFsKgx7BKVfig=",
  "ConversationIndex": "AQHRaThgdSG4wzZJpEWwqDHsEpV+KJ9OtWGUgAAkYLI=",
  "IsDeliveryReceiptRequested": false,
  "IsReadReceiptRequested": false,
  "IsRead": true,
  "IsDraft": false,
  "WebLink": "https://outlook.office.com/owa/?ItemID=AAMkAGE1Mbs88AADUv0uFAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
  "InferenceClassification": "Focused",
  "UnsubscribeData": [ ],
  "UnsubscribeEnabled": false,
  "Flag": { "FlagStatus": "NotFlagged" },
  "Attachments@odata.context": "https://outlook.office.com/api/beta/$metadata#users('ddfcd489-628b-40d7-b48b-57002df800e5')/messages('AAMkAGE1Mbs88AADUv0uFAAA%3D')/attachments",
  "Attachments": [
    {
      "@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
      "Id": "AAMkAGE1Mbs88AADUv0uFAAABEgAQAL53d0u3BKBJmCxKVxZKBZ8=",
      "LastModifiedDateTime": "2016-03-12T05:54:31Z",
      "Name": "Personal pictures",
      "ContentType": null,
      "Size": 362,
      "IsInline": false,
      "SourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics",
      "ProviderType": "OneDriveBusiness",
      "ThumbnailUrl": null,
      "PreviewUrl": null,
      "Permission": "edit",
      "IsFolder": true
    },
    {
      "@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
      "Id": "AAMkAGE1Mbs88AADUv0uFAAABEgAQAPSg72tgf7hJp0PICVGCc0g=",
      "LastModifiedDateTime": "2016-03-12T06:04:38Z",
      "Name": "Koala picture",
      "ContentType": null,
      "Size": 382,
      "IsInline": false,
      "SourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/koala.jpg",
      "ProviderType": "OneDriveBusiness",
      "ThumbnailUrl": null,
      "PreviewUrl": null,
      "Permission": "edit",
      "IsFolder": false
    },
    {
      "@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
      "Id": "AAMkAGE1Mbs88AADUv0uFAAABEgAQAO3wkFiM3KlCpn81m8qS1W0=",
      "LastModifiedDateTime": "2016-03-12T06:18:54Z",
      "Name": "Hydrangea picture",
      "ContentType": null,
      "Size": 412,
      "IsInline": false,
      "SourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/hydrangea.jpg",
      "ProviderType": "OneDriveBusiness",
      "ThumbnailUrl": null,
      "PreviewUrl": null,
      "Permission": "edit",
      "IsFolder": false
    }
  ]
}

示例请求(嵌套附件项目上的 $expand)

下面的示例获取嵌套附件项。

GET https://outlook-sdf.office.com/api/v2.0/me/messages/AAMkAGE1Mbs88AADUv0uFAAA=/attachments/AAMkAGE1Mbs88AADUv0uFAAABEgAQAL53d0u3BKBJmCxKVxZKBZ8=$expand=Microsoft.OutlookServices.ItemAttachment/Item

示例响应

Status code: 200

{
    "Id": "AAMkAGE1Mbs88AADUv0uFAAABEgAQAL53d0u3BKBJmCxKVxZKBZ8=",
    "LastModifiedDateTime": "2017-04-25T20:05:55Z",
    "Name": "RE: Changes to GetConditionMetadata handler",
    "ContentType": null,
    "Size": 78927,
    "IsInline": false,
    "Item": {
        "Id": "", 
        "Name": "How to retrieve item attachment using Outlook REST API",
        "ContentType": message/rfc822,
        "Size": 71094,
        "IsInline": false,
        "LastModifiedDateTime": "2015-09-24T05:57:59Z",
    }
}

创建附件

你可以创建一个文件附件或 创建一个消息项目附件。

创建文件附件

最低要求的范围

以下各项之一:

添加文件附件到消息。

POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments
必需的参数 类型 说明
URL 参数
message_id 字符串 消息 ID。
正文参数
@odata.type 字符串 #Microsoft.OutlookServices.FileAttachment
名称 字符串 附件的名称。
ContentBytes 二进制 要附加的文件。

在请求正文中指定 名称ContentBytes 参数以及任何可写 文件附件 属性。

响应类型

文件附件

创建项目附件

最低要求的范围

以下各项之一:

将一个项目附件添加到消息。

POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments
必需的参数 类型 说明
URL 参数
message_id 字符串 消息 ID。
正文参数
@odata.type 字符串 #Microsoft.OutlookServices.ItemAttachment
名称 字符串 附件的名称。
一个 消息 或者 事件 实体。 要附加的项。

要附加的项。** ** ** **

响应类型

项目附件

创建参考附件

最低要求的范围

以下各项之一:

将参考附件添加到消息。

POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments
必需的参数 类型 说明
URL 参数
message_id 字符串 消息 ID。
正文参数
@odata.type 字符串 #Microsoft.OutlookServices.ReferenceAttachment
名称 字符串 附件的显示名称。 必需。
SourceUrl 字符串 用于获取附件内容的 URL。 如果这是文件夹的 URL,为了使文件夹在 Outlook 或 Outlook 网页版中正确显示,请将 IsFolder 设置为 true。 必需。

在请求正文中指定 名称SourceUrl 参数以及任何可写 参考附件 属性。

响应类型

参考附件

示例请求

以下示例将参考附件添加到现有消息。 附件是 OneDrive for Business 上的文件的链接。

POST https://outlook.office.com/api/v2.0/me/messages/AAMkAGE1Mbs88AADUv0uFAAA=/attachments
Content-Type: application/json

{ 
    "@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment", 
    "Name": "Koala picture", 
    "SourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/koala.jpg", 
    "ProviderType": "oneDriveBusiness", 
    "Permission": "Edit", 
    "IsFolder": "False" 
} 

示例响应

Status code: 201 Created

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#users('ddfcd489-628b-40d7-b48b-57002df800e5')/messages('AAMkAGE1Mbs88AADUv0uFAAA%3D')/attachments/$entity",
  "@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
  "Id": "AAMkAGE1Mbs88AADUv0uFAAABEgAQAPSg72tgf7hJp0PICVGCc0g=",
  "LastModifiedDateTime": "2016-03-12T06:04:38Z",
  "Name": "Koala picture",
  "ContentType": null,
  "Size": 382,
  "IsInline": false,
  "SourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/koala.jpg",
  "ProviderType": "oneDriveBusiness",
  "ThumbnailUrl": null,
  "PreviewUrl": null,
  "Permission": "edit",
  "IsFolder": false
}

示例请求

以下示例在与创建草稿消息相同的调用中添加参考附件。 附件是 OneDrive for Business 上的文件的链接。

POST https://outlook.office.com/api/v2.0/me/messages
Content-Type: application/json

{
    "Subject": "Plan for dinner",
    "Body": {
      "ContentType": "HTML",
      "Content": "Office anniversary is coming soon!"
    },
    "ToRecipients": [
      {
        "EmailAddress": {
          "Address": "randiw@contoso.onmicrosoft.com"
        }
      }
    ],
    "Attachments": [
      {
        "@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment", 
        "Name": "Hydrangea picture", 
        "SourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/hydrangea.jpg", 
        "ProviderType": "oneDriveBusiness", 
        "Permission": "Edit", 
        "IsFolder": "False" 
      }
    ]
}

示例响应

Status code: 201 Created

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#users('ddfcd489-628b-40d7-b48b-57002df800e5')/messages/$entity",
  "@odata.etag": "W/\"CQAAABYAAACY4MQpaFz9SbqUDe4+bs88AADZ8qi1\"",
  "Id": "AAMkAGE1Mbs88AADZ0CU9AAA=",
  "CreatedDateTime": "2016-03-12T09:04:54Z",
  "LastModifiedDateTime": "2016-03-12T09:04:54Z",
  "ChangeKey": "CQAAABYAAACY4MQpaFz9SbqUDe4+bs88AADZ8qi1",
  "Categories": [ ],
  "ReceivedDateTime": "2016-03-12T09:04:54Z",
  "SentDateTime": "2016-03-12T09:04:54Z",
  "HasAttachments": true,
  "InternetMessageId": "<BL2SR0101MB00188944566BDECE6EDE57F384B60@BL2SR0101MB0018.namsdf01.sdf.exchangelabs.com>",
  "Subject": "Plan for dinner",
  "Body": {
    "ContentType": "html",
    "Content": "<html>\r\n<body>\r\nOffice anniversary is coming soon!\r\n</body>\r\n</html>\r\n"
  },
  "BodyPreview": "Office anniversary is coming soon!",
  "Importance": "normal",
  "ParentFolderId": "AQMkAGE1MQN7j5uzzwAAAIBDwAAAA==",
  "Sender": null,
  "From": null,
  "ToRecipients": [
    {
      "EmailAddress": {
      "Name": "Randi Welch",
      "address": "randiw@contoso.onmicrosoft.com"
      }
    }
  ],
  "CcRecipients": [ ],
  "BccRecipients": [ ],
  "ReplyTo": [ ],
  "ConversationId": "AAQkAGE1MMAAQAJk0cqqggzpKtIHErqyDkcU=",
  "ConversationIndex": "AQHRfD4+mTRyqqCDOkq0gcSurIORxQ==",
  "IsDeliveryReceiptRequested": false,
  "IsReadReceiptRequested": false,
  "IsRead": true,
  "IsDraft": true,
  "WebLink": "https://outlook.office.com/owa/?ItemID=AAMkAGE1Mbs88AADZ0CU9AAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
  "InferenceClassification": "focused",
  "UnsubscribeData": [ ],
  "UnsubscribeEnabled": false,
  "Flag": { "flagStatus": "notFlagged" },
  "Attachments@odata.context": "https://outlook.office.com/api/v2.0/$metadata#users('ddfcd489-628b-40d7-b48b-57002df800e5')/messages('AAMkAGE1Mbs88AADZ0CU9AAA%3D')/attachments",
  "Attachments": [
    {
      "@odata.type": "#Microsoft.OutlookServices.ReferenceAttachment",
      "Id": "AAMkAGE1Mbs88AADZ0CU9AAABEgAQAGe4H1iqXwtLsrCCLLkDxqo=",
      "LastModifiedDateTime": null,
      "Name": "Hydrangea picture",
      "ContentType": null,
      "Size": 0,
      "IsInline": false,
      "SourceUrl": "https://contoso-my.spoppe.com/personal/danas_contoso_onmicrosoft_com/Documents/Pics/hydrangea.jpg",
      "ProviderType": "oneDriveBusiness",
      "ThumbnailUrl": null,
      "PreviewUrl": null,
      "Permission": "edit",
      "IsFolder": false
    }
  ]
}

删除附件

最低要求的范围

以下各项之一:

删除消息的指定附件。 附件可以是 文件附件项目附件

DELETE https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments/{attachment_id}
必需的参数 类型 说明
URL 参数
message_id 字符串 消息 ID。
attachment_id 字符串 附件 ID。

示例请求

DELETE https://outlook.office.com/api/v2.0/me/messages/AAMkAGE0Mz8S-AAA=/attachments/AAMkAGE0Mg67gL7o=

示例响应

Status code: 204

获取文件夹

你可以获取文件夹集合或获取用户邮箱中的文件夹。

获取文件夹集合

最低要求的范围

以下各项之一:

获取登录用户 (.../me/MailFolders) 的根文件夹下或指定的文件夹下的文件夹集合。 你可以使用 .../me/MailFolders 快捷方式获取顶级文件夹集合并导航到另一个文件夹。

GET https://outlook.office.com/api/v2.0/me/MailFolders
GET https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}/childfolders

备注

请参阅 OData 查询参数 了解筛选、排序和分页参数。

必需的参数 类型 说明
URL 参数
folder_id 字符串 文件夹 ID 或 InboxDraftsSentItems 或者 DeletedItems 已知文件夹名(如果你正在从特定文件夹中获取文件夹)。

示例请求

GET https://outlook.office.com/api/v2.0/me/MailFolders

示例响应

Status code: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders",
    "value": [
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/MailFolders('AAMkAGI2AAEKAAA=')",
            "Id": "AAMkAGI2AAEKAAA=",
            "DisplayName": "Deleted Items",
            "ParentFolderId": "AAMkAGI2AAEIAAA=",
            "ChildFolderCount": 0,
            "UnreadItemCount": 0,
            "TotalItemCount": 1
        },
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/MailFolders('AAMkAGI2AAEPAAA=')",
            "Id": "AAMkAGI2AAEPAAA=",
            "DisplayName": "Drafts",
            "ParentFolderId": "AAMkAGI2AAEIAAA=",
            "ChildFolderCount": 0,
            "UnreadItemCount": 0,
            "TotalItemCount": 0
        },
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/MailFolders('AAMkAGI2AAEMAAA=')",
            "Id": "AAMkAGI2AAEMAAA=",
            "DisplayName": "Inbox",
            "ParentFolderId": "AAMkAGI2AAEIAAA=",
            "ChildFolderCount": 0,
            "UnreadItemCount": 6,
            "TotalItemCount": 6
        },
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/MailFolders('AAMkAGI2AAEeAAA=')",
            "Id": "AAMkAGI2AAEeAAA=",
            "DisplayName": "Junk Email",
            "ParentFolderId": "AAMkAGI2AAEIAAA=",
            "ChildFolderCount": 0,
            "UnreadItemCount": 0,
            "TotalItemCount": 0
        },
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/MailFolders('AAMkAGI2AAELAAA=')",
            "Id": "AAMkAGI2AAELAAA=",
            "DisplayName": "Outbox",
            "ParentFolderId": "AAMkAGI2AAEIAAA=",
            "ChildFolderCount": 0,
            "UnreadItemCount": 0,
            "TotalItemCount": 0
        },
        {
            "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/MailFolders('AAMkAGI2AAEJAAA=')",
            "Id": "AAMkAGI2AAEJAAA=",
            "DisplayName": "Sent Items",
            "ParentFolderId": "AAMkAGI2AAEIAAA=",
            "ChildFolderCount": 0,
            "UnreadItemCount": 0,
            "TotalItemCount": 3
        }
    ]
}

响应类型

请求的 文件夹 集合。

获取文件夹

最低要求的范围

以下各项之一:

通过 ID 获取文件夹。

GET https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}

获取用户共享的邮箱文件夹:

GET https://outlook.office.com/api/v2.0/users/{user_id}/mailFolders/{folder_id}

备注

请参阅 OData 查询参数 了解筛选、排序和分页参数。

必需的参数 类型 说明
URL 参数
folder_id 字符串 目标文件夹 ID,或者 InboxDraftsSentItemsDeletedItems 已知文件夹的名称。

示例请求

GET https://outlook.office.com/api/v2.0/me/MailFolders/inbox

示例响应

Status code: 200

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders/$entity",
    "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/MailFolders('AAMkAGI2AAEMAAA=')",
    "Id": "AAMkAGI2AAEMAAA=",
    "DisplayName": "Inbox",
    "ParentFolderId": "AAMkAGI2AAEIAAA=",
    "ChildFolderCount": 0,
    "UnreadItemCount": 6,
    "TotalItemCount": 6
}

示例请求

获取由其他用户共享的文件夹:

GET https://outlook.office.com/api/v2.0/users/8c14ebe1-e4ba-4232cd011db47/mailFolders/AAMkADk0MGFkODE3LWE4MmYtNDRhOS04OGQxLTM

示例响应

HTTP/1.1 200 OK

{
    "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders/$entity",
    "@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/MailFolders('AAMkADk0MGFkODE3LWE4MmYtNDRhOS04OGQxLTM')",
    "Id": "AAMkADk0MGFkODE3LWE4MmYtNDRhOS04OGQxLTM",
    "DisplayName": "Inbox",
    "ParentFolderId": "AAMkADk0MGFkODE3LWE4MmYtNDRhOS04OGQxLTM4QCHGmLqkYhISaO_lSymODLQABa6L5YpAAA=",
    "ChildFolderCount": 4,
    "UnreadItemCount": 27962,
    "TotalItemCount": 64420
}

响应类型

请求的 文件夹

同步文件夹层次结构

你可以获取邮箱中所有文件夹的常量表。 在同步邮件文件夹层次结构时,请求这个类别。

终结点 文件夹类别
Me/MailFolders 邮件文件夹

你只能同步每个文件夹类别的顶级。 例如,你可以请求 Me/MailFolders 但不可以请求 Me/MailFolders('收件箱')

同步支持检索层次结构中所有文件夹的完全同步以及检索自上次完全同步后发生更改的所有文件夹的增量同步。

最低要求的范围

以下各项之一:

GET https://outlook.office.com/api/v2.0/me/MailFolders
必需的参数 类型 说明
标头参数
Prefer odata.trackchanges 表示该请求是一个同步请求。
正文参数
odata.deltaLink 字符串 指示文件夹层次结构最后一次同步的令牌。

如果任何以下查询参数 - $filter$orderby$search$top - 包含在请求中,它们将被忽略。

响应类型

请求类别中的文件夹的常量列表。

创建文件夹

将新文件夹添加到文件夹集合。

创建文档夹

最低要求的范围

以下各项之一:

按照 DisplayName 中指定的名称创建一个子文件夹。 DisplayName 是唯一可写的 文件夹 属性。

POST https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}/childfolders
必需的参数 类型 说明
URL 参数
folder_id 字符串 目标文件夹 ID,或者 InboxDraftsSentItemsDeletedItems 已知文件夹的名称。
正文参数
显示名称 字符串 文件夹的显示名称。

示例请求

POST https://outlook.office.com/api/v2.0/me/MailFolders/inbox/childfolders
Content-Type: application/json

{
  "DisplayName": "Company"
}

示例响应

Status code: 201

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders('inbox')/ChildFolders/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/MailFolders('AAMkAGE0Mz-l_AAA=')",
  "Id": "AAMkAGE0Mz-l_AAA=",
  "ParentFolderId": "AAMkAGE0MAAEMAAA=",
  "DisplayName": "Company",
  "ChildFolderCount": 0,
  "UnreadItemCount": 2,
  "TotalItemCount": 27
}

响应类型

新的 文件夹

备注

你无法创建顶级文件夹。 你只能将文件夹添加到 childfolders 端点。

更新文件夹

更改文件夹名。

更新文件夹

最低要求的范围

以下各项之一:

将文件夹名更改为 DisplayName 中指定的名称 。 该名称是 文件夹 的唯一可写属性。

PATCH https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}
必需的参数 类型 说明
URL 参数
folder_id 字符串 目标文件夹 ID,或者 InboxDraftsSentItemsDeletedItems 已知文件夹的名称。
正文参数
显示名称 字符串 文件夹的新显示名称。

示例请求

PATCH https://outlook.office.com/api/v2.0/me/MailFolders/AAMkAGE0Mz-l_AAA=
Content-Type: application/json

{
  "DisplayName": "Business"
}

示例响应

Status code: 200

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/MailFolders('AAMkAGE0Mz-l_AAA=')",
  "Id": "AAMkAGE0Mz-l_AAA=",
  "ParentFolderId": "AAMkAGE0MAAEMAAA=",
  "DisplayName": "Business",
  "ChildFolderCount": 0,
  "UnreadItemCount": 4,
  "TotalItemCount": 38
}

响应类型

更新的 文件夹

删除文件夹

删除一个文件夹及其所有内容。

备注

删除文件夹时要小心。 已删除内容可能无法恢复。 要了解更多信息,请参阅 删除项目

删除文件夹

最低要求的范围

以下各项之一:

删除 folder_id 中指定的文件夹。

DELETE https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}
必需的参数 类型 说明
URL 参数
folder_id 字符串 目标文件夹 ID,或者 InboxDraftsSentItemsDeletedItems 已知文件夹的名称。

示例请求

DELETE https://outlook.office.com/api/v2.0/me/MailFolders/AAMkAGE0Mz-l_AAA=

示例响应

Status code: 204

移动或复制文件夹

你可以将文件夹移动或复制到另一个文件夹。

移动文件夹

最低要求的范围

以下各项之一:

通过使用 移动 方法将文件夹及其内容移动到另一个文件夹。

POST https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}/move
必需的参数 类型 说明
URL 参数
folder_id 字符串 目标文件夹 ID,或者 InboxDraftsSentItemsDeletedItems 已知文件夹的名称。
正文参数
DestinationId 字符串 目标文件夹 ID,或者 InboxDraftsSentItemsDeletedItems 已知文件夹的名称。

示例请求

POST https://outlook.office.com/api/v2.0/me/MailFolders/AAMkAGE0Mz-l_AAA=/move
Content-Type: application/json

{
  "DestinationId": "AAMkAGE0MyxQ9AAA="
}

示例响应

Status code: 201

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/MailFolders('AAMkAGE0Mz-l_AAA=')",
  "Id": "AAMkAGE0Mz-l_AAA=",
  "ParentFolderId": "AAMkAGE0MyxQ9AAA=",
  "DisplayName": "Business",
  "ChildFolderCount": 0,
  "UnreadItemCount": 4,
  "TotalItemCount": 38
}

响应类型

移动了的 文件夹

复制文件夹

最低要求的范围

以下各项之一:

通过使用 复制 方法将文件夹及其内容复制到另一个文件夹。

示例请求

POST https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}/copy
必需的参数 类型 说明
URL 参数
folder_id 字符串 目标文件夹 ID,或者 InboxDraftsSentItemsDeletedItems 已知文件夹的名称。
正文参数
DestinationId 字符串 目标文件夹 ID,或者 InboxDraftsSentItemsDeletedItems 已知文件夹的名称。
POST https://outlook.office.com/api/v2.0/me/MailFolders/AAMkAGE0Mz-l_AAA=/copy
Content-Type: application/json

{
  "DestinationId": "inbox"
}

示例响应

Status code: 201

{
  "@odata.context": "https://outlook.office.com/api/v2.0/$metadata#Me/MailFolders/$entity",
  "@odata.id": "https://outlook.office.com/api/v2.0/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/MailFolders('AAMkAGE0Mz-mAAAA=')",
  "Id": "AAMkAGE0Mz-mAAAA=",
  "ParentFolderId": "AAMkAGE0MAAEMAAA=",
  "DisplayName": "Business",
  "ChildFolderCount": 0,
  "UnreadItemCount": 4,
  "TotalItemCount": 38
}

响应类型

文件夹 的新副本。

后续步骤

无论你准备开始构建应用还是只想了解更多信息,我们都已为你考虑周全。

或者,了解有关使用 Office 365 平台的更多信息: