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 foldersList 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”文件夹也包含在响应中。