Microsoft图形 - Outlook邮件 - 列出所有邮件文件夹(不仅仅是顶级文件夹)?

时间:2017-03-20 10:54:33

标签: api outlook microsoft-graph

目前,据我所知,Microsoft图表根据https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/message为Outlook邮件文件夹提供了两个主要端点

List mail foldersList child folders - 意思是在我的仪表板应用程序中构建文件夹层次结构,我需要进行递归REST API调用 - 这非常慢且非常糟糕。

有没有办法让微软一次只返回所有文件夹?

3 个答案:

答案 0 :(得分:3)

是的,可以。只需使用增量查询即可获取所有文件夹。

请求示例: https://graph.microsoft.com/v1.0/users/[user_id]/mailfolders/delta?$select=displayname 您将获得所有文件夹的数组,并在响应中父文件夹项之后加上子文件夹。

测试:
转到:https://developer.microsoft.com/en-us/graph/graph-explorer
GET版本:v1.0 URL:https://graph.microsoft.com/v1.0/me/Mailfolders/delta
运行查询

注意,响应中还包括其parentFolderId为“收件箱” ID的“内部屏幕”和“ Project Falcon”文件夹。

答案 1 :(得分:1)

不,没有。您应该检查每个文件夹上的childFolderCount属性,并仅查询是否为非零。

答案 2 :(得分:0)

使用当前的V1.0

通过扩展childFolders容器,您可以为每个呼叫获得两个级别。

https://graph.microsoft.com/v1.0/me/mailFolders?$top=250&$expand=childFolders

使用测试版

每个请求最多可以获取250个文件夹,您将获得一个扁平的层次结构,其中包括无限的子级别。自2015年以来,该Beta版本一直处于beta版本(我可以说是最好的),我无法确定何时/是否将其投入生产。就我而言,我使用Beta来获取文件夹,回退到v1.0和递归循环。

只需稍微更改GET请求即可。 v1.0 测试版。对我来说,现有的Auth令牌和凭据都可以正常运行,而无需进行任何更改。另外请注意,无需使用Beta端点来扩展childFolders。

https://graph.microsoft.com/beta/me/mailFolders?$top=250

示例响应...

[{
    "id": "xx-1",
    "displayName": "Inbox",
    "parentFolderId": "xx-0",
    "childFolderCount": 1,
    "unreadItemCount": 8,
    "totalItemCount": 22,
    "wellKnownName": "inbox"
  },
  {
    "id": "xx-2",
    "displayName": "Level 2",
    "parentFolderId": "xx-1",
    "childFolderCount": 1,
    "unreadItemCount": 2,
    "totalItemCount": 4,
    "wellKnownName": null
  },
  {
    "id": "xx-3",
    "displayName": "level 3",
    "parentFolderId": "xx-2",
    "childFolderCount": 1,
    "unreadItemCount": 0,
    "totalItemCount": 0,
    "wellKnownName": null
  },
  {
    "id": "xx-4",
    "displayName": "level 4",
    "parentFolderId": "xx-3",
    "childFolderCount": 0,
    "unreadItemCount": 0,
    "totalItemCount": 0,
    "wellKnownName": null
  }
]