Microsoft graph - outlook 邮件 - 列出所有邮件文件夹(不仅仅是顶级文件夹)?
Microsoft graph - outlook mail - list all mail folders (not just the top level ones)?
目前,据我所知,Microsoft Graph 根据 https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/message
为 Outlook 邮件文件夹提供了 2 个主要端点
List mail folders
和 List child folders
- 意味着只是为了在我的仪表板应用程序中构建文件夹层次结构,我需要进行递归 REST API 调用 - 这非常缓慢且非常糟糕。
有什么方法可以让 Microsoft 一次只 return 所有文件夹?
不,没有。您应该检查每个文件夹上的 childFolderCount
属性 并且仅在非零时查询。
使用当前的V1.0
通过展开 childFolders 容器,每次调用可以获得两个级别。
https://graph.microsoft.com/v1.0/me/mailFolders?$top=250&$expand=childFolders
使用测试版
每个请求最多可以提取 250 个文件夹,您将收到一个扁平的层次结构,其中包括无限的子级别。 Beta 版本自 2015 年以来一直处于测试阶段(据我所知),我不能说 when/if 它会投入生产。在我的例子中,我使用测试版来获取文件夹并回退到 v1.0 和递归循环。
只需稍微更改您的 GET 请求即可。 v1.0 到 beta。对我来说,现有的 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
}
]
是的,你可以。只需使用增量查询即可获取所有文件夹。
请求示例:
https://graph.microsoft.com/v1.0/users/[user_id]/mailfolders/delta?$select=displayname
您将获得所有文件夹的数组,在响应中的 parent-folder 项之后有子文件夹。
测试:
前往:https://developer.microsoft.com/en-us/graph/graph-explorer
获取版本:v1.0 URL:https://graph.microsoft.com/v1.0/me/Mailfolders/delta
运行查询
请注意,parentFolderId 是“收件箱”ID 的“Internal Screens”和“Project Falcon”文件夹也包含在响应中。
目前,据我所知,Microsoft Graph 根据 https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/message
为 Outlook 邮件文件夹提供了 2 个主要端点List mail folders
和 List child folders
- 意味着只是为了在我的仪表板应用程序中构建文件夹层次结构,我需要进行递归 REST API 调用 - 这非常缓慢且非常糟糕。
有什么方法可以让 Microsoft 一次只 return 所有文件夹?
不,没有。您应该检查每个文件夹上的 childFolderCount
属性 并且仅在非零时查询。
使用当前的V1.0
通过展开 childFolders 容器,每次调用可以获得两个级别。
https://graph.microsoft.com/v1.0/me/mailFolders?$top=250&$expand=childFolders
使用测试版
每个请求最多可以提取 250 个文件夹,您将收到一个扁平的层次结构,其中包括无限的子级别。 Beta 版本自 2015 年以来一直处于测试阶段(据我所知),我不能说 when/if 它会投入生产。在我的例子中,我使用测试版来获取文件夹并回退到 v1.0 和递归循环。
只需稍微更改您的 GET 请求即可。 v1.0 到 beta。对我来说,现有的 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
}
]
是的,你可以。只需使用增量查询即可获取所有文件夹。
请求示例: https://graph.microsoft.com/v1.0/users/[user_id]/mailfolders/delta?$select=displayname 您将获得所有文件夹的数组,在响应中的 parent-folder 项之后有子文件夹。
测试:
前往:https://developer.microsoft.com/en-us/graph/graph-explorer
获取版本:v1.0 URL:https://graph.microsoft.com/v1.0/me/Mailfolders/delta
运行查询
请注意,parentFolderId 是“收件箱”ID 的“Internal Screens”和“Project Falcon”文件夹也包含在响应中。