犯傻的韭菜 · 中华人民共和国司法部· 2 月前 · |
英俊的黑框眼镜 · PC与IOS ...· 1 年前 · |
刚毅的企鹅 · 为什么说《守望者》中的笑匠是明白人? - 知乎· 1 年前 · |
考研的乌龙茶 · 上海中本贯通到底好不好? - 知乎· 1 年前 · |
幸福的领带 · 爱之深责之切是什么意思_爱之深责之切下一句是 ...· 1 年前 · |
rest post请求 outlook |
https://learn.microsoft.com/zh-cn/previous-versions/office/office-365-api/api/version-2.0/mail-rest-operations |
满身肌肉的甜瓜
1 年前 |
适用于 :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 参考 部分,然后选择所需的版本。
消息存储在邮箱文件夹中,因此消息端点通常包含该消息的文件夹。 文件夹由 ID 或已知文件夹名称来指定,如
Inbox
,
Drafts
,
SentItems
,或
DeletedItems
。
邮箱文件夹可以包含邮件和其他文件夹。 你可以获取、创建、改变、删除和管理文件夹。 你可以使用以下知名文件夹名而不是 ID 来指定相应的文件夹:
Inbox
、
SentItems
、
Drafts
、 或者
DeletedItems
。
像其他 Outlook REST 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"
获取消息集合
获取消息集合
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.read
wl.imap
本节中的操作行为因版本而异。 选择左侧的目录中 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
默认情况下,响应中的每条消息都包含其所有属性。 使用 $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"
请求的 消息 集合。
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.read
wl.imap
通过 ID 获取消息。
GET https://outlook.office.com/api/v2.0/me/messages/{message_id}
"@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
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.read
wl.imap
你可以将本地数据存储与服务器上的消息同步。 消息同步是按文件夹操作,例如,您可以同步收件箱中的所有消息。 要同步文件夹层次结构中的消息,你需要分别同步每个文件夹。
该 API 既支持检索文件夹中所有消息的完全同步,又支持检索自上次完全同步以来发生更改的所有消息的增量同步。
同步邮件文件夹通常需要两个或更多的 GET 请求。 发出 GET 请求方法与你 获取消息 的方式很像,只是会包括某些请求标头,并在适当时包括 deltaToken 或 skipToken。
你必须在所有同步请求中指定 Prefer: odata.track-changes 标头,但那些包含从上个同步请求返回的 skipToken
的请求除外。 在第一个响应中,查找 Preference-Applied: odata.track-changes 标头,在继续之前确认资源支持同步。
你可以指定 Prefer: odata.maxpagesize={x} 标头来设置请求中返回的最大消息数。
下面是一轮典型的同步消息:
使用强制性 Prefer: odata.track-changes 标头发出初始 GET 请求。 对同步请求的初始响应始终返回 deltaToken。 (第二个 GET 请求和后续 GET 请求与第一个 GET 请求不同,不同之处在于该请求包括在前一个响应中收到的 deltaToken 或 skipToken。)
如果第一个响应返回 Preference-Applied: odata.track-changes 标头,你可以继续同步该文件夹。
进行第二次 GET 请求。 指定 Prefer: odata.track-changes 标头和从第一个 GET 返回的 deltaToken,以确定是否有任何其他消息。 第二个请求将返回其他消息,且如果有更多的消息可用,则返回 skipToken,如果最后一条消息已经同步,则返回 deltaToken(在这种情况下同步轮次完成,你可以停止)。
通过发送 GET 调用并包括前一次调用中返回的 skipToken,继续进行同步。 在再次使用 deltaToken 获取包含 @odata.deltaLink 标头的最终响应(指明同步已完成)时停止。
缓存这次完全同步轮次中收到的最后一个 delta 令牌。 使用它开始一次增量同步轮次。
这是一次增量同步轮次:
使用强制性 Prefer: odata.track-changes 标头和在完全同步轮次的最后响应中收到的缓存 deltaToken 来进行初始 GET 请求。
第二步和后续步骤遵循用于完全同步的模式。
在特定文件夹中同步消息
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}
默认情况下,同步将返回文件夹中的所有属性和所有消息。 使用 $select 查询表达式以只指定你需要获得最佳性能的属性。 始终返回该 ID 属性。
同步支持查询表达式 $select、$top、$expand。 对 $filter 和 $orderby 支持有限,而对 $search 则不支持。
唯一支持的 $filter 表达式是“$filter=ReceivedDateTime+ge+{value}”或“$filter=ReceivedDateTime+gt+{value}”。
唯一支持的 $orderby 表达式是“$orderby=ReceivedDateTime+desc”。 如果不包含 $orderby 表达式,则不能保证返回顺序。
请参阅 OData 查询参数 了解筛选、排序和分页参数。
包含请求消息的集合和一个 deltaToken 或 skipToken,你用于从服务器请求其他消息数据页面以进行增量同步。
以下示例显示对包含 7 条消息的特定文件夹进行同步的一系列请求。 第一个同步请求指定一次返回 2 条消息 (odata.maxpagesize 是 2 ),每条消息只有 发件人 和 主题 属性。
初始响应返回 2 条消息,deltaLink
和 deltaToken
。
第二个请求使用那个 deltaToken
。 第二个响应返回 2 条消息, nextLink
和 skipToken
。
要完成同步,第三个和第四个请求使用从上一个同步请求返回的 skipToken
,直到第四个响应返回 deltaLink
和 deltaToken
,在这个情况下,这轮同步才完成。 保存 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"
创建并发送消息
你可以即时发送新消息,或创建草稿消息,然后发送。 你可以在任何文件夹中创建草稿。
即时发送新消息
创建草稿消息
发送草稿消息
即时发送新消息
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.send
wl.imap
通过使用 SendMail 方法发送请求正文中提供的消息。 通过在 附件 集合属性中指定,你可以在同一个操作调用中包含一个或多个附件。 你还可以将消息保存在“已发送邮件”文件夹中。
POST https://outlook.office.com/api/v2.0/me/sendmail
在请求正文中,使用必需的 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
创建草稿消息
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
创建新邮件的草稿。 草稿可以在任何文件夹中创建,也可以选择 更新 之后 发送。 要保存到草稿文件夹,请使用 /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
在请求正文中指定任何可写的 消息 属性。
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
草稿 消息。
发送草稿消息
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.send
wl.imap
通过使用 发送 方法,发送 新消息草稿、 回复草稿、 全部答复草稿 或 转发草稿。 然后消息保存在“已发送邮件”文件夹中。
POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/send
本节中的操作行为因版本而异。 选择左侧的目录中 Office 365 REST API 引用 下的版本以了解更多详情。
你可以即时回复注释,也可以先创建回复草稿,然后更新并发送草稿。
你只能回复消息的发件人或一次回答所有收件人。
即时回复发件人
即时全部答复
创建草稿回复消息
创建草稿全部回复消息
即时回复发件人
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.send
wl.imap
通过指定注释并使用 回复 方法来回复消息的发件人。 然后消息保存在“已发送邮件”文件夹中。
或者,如果你需要修改回复的任何 可更新的属性,你可以先 创建草稿回复消息, 更新 消息属性,然后 发送 回复。
POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/reply
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
即时全部答复
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.send
wl.imap
通过指定注释并使用 ReplyAll 方法来回复消息的所有收件人。 然后消息保存在“已发送邮件”文件夹中。
或者,如果你需要修改回复的任何 可更新属性,你可以先 创建草稿全部回复消息, 更新 消息属性,然后 发送 回复。
POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/replyall
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
创建草稿回复消息
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
创建回复指定 消息 的草稿。 然后你可以 更新 草稿,将回复内容添加到 正文 属性,或更改其他 消息属性,或者仅 发送草稿。
POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/createreply
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" }
含 ToRecipient、 IsDraft、以及其他预填充的适当属性的草稿回复 消息。
创建草稿全部回复消息
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
创建草稿以回复指定邮件的发件人和所有收件人。 然后你可以 更新 草稿,将回复内容添加到 正文,或更改其他 邮件属性,或者仅 发送 草稿。
POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/createreplyall
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
含 ToRecipient、 IsDraft、以及其他预填充的适当属性的草稿回复 消息。
转发新的或起草的消息
本节中的操作行为因版本而异。 选择左侧的目录中 Office 365 REST API 引用 下的版本以了解更多详情。
你可以直接转发消息,也可以创建草稿转发消息,然后进行更新并发送。
直接转发消息
创建转发消息
直接转发消息
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.send
wl.imap
通过使用 转发 方法转发消息,也可以有选择地指定注释。 然后消息保存在“已发送邮件”文件夹中。
另外,如果你需要在要转发的消息中修改任何 可更新的属性,你可以先 创建一个转发消息草稿, 更新 消息属性,然后 发送 回复。
POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/forward
指定 注释 和请求正文中的 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
创建草稿转发消息
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
创建草稿以转发指定邮件。 然后你可以 更新 草稿以将内容添加到 正文 或更改其他 消息属性,或者仅 发送 草稿。
POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/createforward
"@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 和预先填充适当的属性的草稿转发 消息。
更改消息的可写属性并保存更改。
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
更改草稿或现有 消息 上的可写属性。 只有你指定的属性才会更改。
PATCH https://outlook.office.com/api/v2.0/me/messages/{message_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
已更新的 消息。
删除消息时请小心。 已删除内容可能无法恢复。 要了解更多信息,请参阅 删除项目。
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
DELETE https://outlook.office.com/api/v2.0/me/messages/{message_id}
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
已移动的 消息。
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
将邮件复制到文件夹。
POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/copy
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 属性。 可能的值是 Focused
和 Other
,这表明用户是否认为该消息分别更重要和更不重要。 要纠正和训练信息分类系统,请在消息级别使用 PATCH 操作在 InferenceClassification 属性上。
重点收件箱 REST API 还允许你创建覆盖。 每个覆盖,都由一个表示 InferenceClassificationOverride 实例表示,是分类系统的指令,总是以一致的方式(即总是“重点”或总是“其他”)标明来自特定发件人的消息,而不管任何先前学习的方法。 你可以 创建、 获取、 更新 和 删除 指定的用户的替代。 那个用户的替代,如果有的话,可以在一个 InferenceClassification 导航属性内访问,这是一个 InferenceClassificationOverride 实例的集合。 覆盖允许用户更多地控制传入消息的分类,并建立对分类系统的更大信任。
请注意,分类系统只会在收件箱中收到的消息中学习并应用分类。 其他文件夹中的消息默认为“重点”。 设置会影响到达收件箱的未来邮件的fu覆盖;覆盖不会修改包括收件箱在内的任何文件夹中现有消息的 InferenceClassification 属性。
对邮件分类系统进行培训
更新消息分类
使用替代对每个发件人一致分类
为发件人创建覆盖
获取所有用户替代
为发件人更新覆盖
删除发件人替代
更新消息分类
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
更改指定消息的 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}')
这个示例把 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"
为发件人创建覆盖
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
创建由 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
新创建的 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"
获取所有用户替代
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.read
wl.imap
获取用户设置为始终以特定方式对来自特定发件人的邮件进行分类的替代。
每个替代均对应一个发件人的 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
一个 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"
为发件人更新覆盖
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
按指定内容更改覆盖的 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}')
更新的 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"
删除发件人替代
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
删除由其 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}')
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。
获取邮箱设置
最低要求的范围
https://outlook.office.com/mailboxsettings.read
获取登录用户主邮箱的设置。 设置示例包括用户的首选语言和默认时区以及任何自动回复设置。
GET https://outlook.office.com/api/v2.0/me/MailboxSettings
在所有邮箱设置中获取首选语言设置:
GET https://outlook.office.com/api/beta/me/MailboxSettings/Language
在所有邮箱设置中获取首选时区设置:
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)"
获取自动回复设置
最低要求的范围
https://outlook.office.com/mailboxsettings.read
获取登录用户邮箱的自动回复设置。
自动回复允许你在向你发送电子邮件时自动通知消息人员。 例如,你可以在你没有空并且无法回复他们时通知他们。
由于自动回复是用户邮箱设置的一部分(以 MailboxSettings 表示),你可以通过获取所有邮箱设置,其中包括自动回复设置,或者通过获取具体的自动回复设置,来查看自动回复设置。
你可以使用 Prefer: outlook.timezone
HTTP 标头来指定首选的时区,以显示 ScheduledStartDateTime 和 ScheduledEndDateTime 的值。
GET https://outlook.office.com/api/v2.0/me/MailboxSettings/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"
更新自动回复设置
最低要求的范围
https://outlook.office.com/mailboxsettings.readwrite
自动回复是用户邮箱设置的一部分(以 MailboxSettings 表示)。 你可以通过更新相应的邮箱设置来启用、配置或禁用自动回复。
不能创建或删除任何邮箱设置。
PATCH https://outlook.office.com/api/v2.0/me/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。
你可以获取附件集合或获取附件。
获取附件集合
获取附件集合
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.read
wl.imap
获取特定消息的附件。
GET https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments
默认情况下,响应中的每个附件都包含与该附件类型对应的所有属性。 使用 $select
只指定那些你需要的最佳性能的属性。 始终返回该 ID 属性。 请参阅 OData 查询参数 了解筛选、排序和分页参数。
一个附件集合,其类型可以为 FileAttachment 或 ItemAttachment。
示例请求和响应
以下示例显示如何使用 $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",
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.read
wl.imap
获取特定消息的附件
GET https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments/{attachment_id}
请参阅 OData 查询参数 了解筛选、排序和分页参数。
默认情况下,响应包含附件的所有属性。 使用 $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",
你可以创建一个文件附件或 创建一个消息项目附件。
创建文件附件
创建项目附件
创建参考附件
创建文件附件
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
添加文件附件到消息。
POST https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments
以下示例将参考附件添加到现有消息。 附件是 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
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
DELETE https://outlook.office.com/api/v2.0/me/messages/{message_id}/attachments/{attachment_id}
DELETE https://outlook.office.com/api/v2.0/me/messages/AAMkAGE0Mz8S-AAA=/attachments/AAMkAGE0Mg67gL7o=
Status code: 204
获取文件夹
你可以获取文件夹集合或获取用户邮箱中的文件夹。
获取文件夹集合
获取文件夹
获取文件夹集合
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.read
wl.imap
获取登录用户 (.../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 查询参数 了解筛选、排序和分页参数。
"@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
请求的 文件夹 集合。
获取文件夹
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.read
wl.imap
通过 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 查询参数 了解筛选、排序和分页参数。
"@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('收件箱')。
同步支持检索层次结构中所有文件夹的完全同步以及检索自上次完全同步后发生更改的所有文件夹的增量同步。
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.read
wl.imap
GET https://outlook.office.com/api/v2.0/me/MailFolders
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
端点。
更新文件夹
更改文件夹名。
更新文件夹
更新文件夹
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
将文件夹名更改为 DisplayName 中指定的名称 。 该名称是 文件夹 的唯一可写属性。
PATCH https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}
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
更新的 文件夹。
删除文件夹
删除一个文件夹及其所有内容。
删除文件夹
删除文件夹时要小心。 已删除内容可能无法恢复。 要了解更多信息,请参阅 删除项目。
删除文件夹
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
删除 folder_id 中指定的文件夹。
DELETE https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}
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
移动了的 文件夹。
复制文件夹
最低要求的范围
以下各项之一:
https://outlook.office.com/mail.readwrite
wl.imap
通过使用 复制 方法将文件夹及其内容复制到另一个文件夹。
POST https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}/copy
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
该 文件夹 的新副本。
无论你准备开始构建应用还是只想了解更多信息,我们都已为你考虑周全。
开始使用邮件、日历和联系人 REST API。
想要查看一些示例吗? 我们就有。
或者,了解有关使用 Office 365 平台的更多信息:
Outlook 开发人员中心的 Outlook REST API
Office 365 平台开发概述
Office 365 应用验证和资源授权
将应用手动注册到 Azure AD,以便访问 Office 365 API
日历 API 参考
联系人 API 参考
任务 REST API (预览)
OneDrive API
发现服务 REST API 操作参考
邮件、日历、联系人和任务 REST API 的资源参考