Office 365 邮件文件夹列表 API 返回 404 消息文件夹未找到

Office 365 Mail folder listing API returning 404 with message folder not found

注意:相同的流程适用于 Office 365 许可证。

交换设置信息: 我们有一个混合环境,主要交换服务器在本地,并且正在在线交换中存档用户邮箱。

许可: Exchange 在线存档

场景: 我们正在使用 Office 365 rest apis。 我使用了全局管理员授权并将生成的刷新令牌存储在安全位置。使用刷新令牌,我获取访问令牌。然后使用此访问令牌来获取用户的邮件端点。

然后为了获取用户邮件文件夹,我创建了 client_credentials type 的新 access_token,然后在上述端点上查询文件夹列表。

下面是详细的request/response。 出于隐私原因,user_name 和 access_token 已被有意删除。

** REQUEST START (Sat Apr 23 07:40:28 2016) **
REQUEST: GET https://outlook.office365.com/api/v1.0/users('<user_name>')/folders/?$top=100
Accept-Encoding: gzip, deflate
accept: application/json
User-Agent: python-requests/2.4.1 CPython/2.7.8 Linux/3.13.0-83-generic
Connection: keep-alive
content-type: application/json
Authorization: Bearer <access_token>
None
* * * *
RESPONSE (404)
x-calculatedbetarget: AM2PR05MB1089.eurprd05.prod.outlook.com
x-powered-by: ASP.NET
transfer-encoding: chunked
request-id: 8c9ac8a6-8fe7-46f6-8dcc-1fff8b1ac8ac
x-aspnet-version: 4.0.30319
server: Microsoft-IIS/8.0
cache-control: private
x-beserver: AM2PR05MB1089
x-diaginfo: AM2PR05MB1089
x-feserver: BN1PR08CA0019
set-cookie: exchangecookie=309073c961cb44798302c8eb2fee0188; expires=Sun, 23-Apr-2017 07:40:28 GMT; path=/; HttpOnly
date: Sat, 23 Apr 2016 07:40:28 GMT
odata-version: 4.0
content-type: application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8
x-backendhttpstatus: 404
{"error":{"code":"ErrorFolderNotFound","message":"The specified folder could not be found in the store."}}

我的问题:

  1. Office 365 rest API 是否不支持交换在线存档许可证?如果它们受支持,那么为什么我收到消息 "specified folder not found"?
  2. 的 404 错误

根据我的测试,如果用户在 Exchange Online 上没有主邮箱,您将收到 404 错误。例如,Azure AD 中不存在用户或 Azure AD 中存在用户,但没有 Exchange Online 许可证 (Compare Exchange Online plans)

在您的案例中,用户许可证是 "Exchange Online Archiving",这是一个基于云的企业 class 归档解决方案,可帮助您解决归档、合规性、法规和电子数据展示挑战。但它并没有为用户提供 Exchange Online 上的主邮箱,这就是为什么用户在尝试查找主邮箱时会收到 404 错误。

更新#1:

我假设混合环境如下:Exchange on-premise + Exchange Online(Exchange Online 计划 1 或 2 + Exchange Online Archiving)。

有的用户邮箱完全在Exchange online上,有的用户邮箱在本地Exchange Server上(有误请指正)

目前Office 365API不支持访问实现邮箱。

对于主邮箱位于本地 Exchange 服务器上的用户。由于 Office 365 API 适用于 Exchange Online 但不适用于 Exchange on-premise,因此您无法对这些用户使用 Office 365 API。

对于主邮箱在 Exchange Online 上的用户(Exchange Online 计划 1 或 2 用户),您将能够使用 Office 365 API 访问邮箱。

要访问本地 Exchange Server 中的邮箱,您可以考虑使用 EWS API