API списка почтовых папок Office 365 возвращает 404 с не найденной папкой сообщений

Примечание. Тот же процесс работает для лицензии Office 365.

Информация о настройке Exchange: у нас гибридная среда, в которой основной сервер Exchange находится локально, и мы архивируем почтовые ящики пользователей при обмене онлайн.

Лицензирование: Exchange Online Archiving

Сценарий: мы используем Office 365 rest API. Я использовал глобальную авторизацию администратора и сохранил полученный токен обновления в безопасном месте. Используя токен обновления, я получаю токен доступа. Затем этот токен доступа используется для получения конечной точки почты пользователя.

Затем, чтобы получить папку с почтой пользователя, я создаю новый access_token типа client_credentials а затем запросите список папок на указанной выше конечной точке.

Ниже подробный запрос/ответ. 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. Не поддерживаются ли остальные API-интерфейсы Office 365 для лицензии на онлайн-архивирование Exchange? Если они поддерживаются, то почему я получаю ошибку 404 с сообщением "указанная папка не найдена"?

person Naveen    schedule 26.04.2016    source источник


Ответы (1)


Как я тестировал, если у пользователя нет основного почтового ящика в Exchange Online, вы получите ошибку 404. Например, пользователь не существует в Azure AD или пользователь существует в Azure AD, но не имеет лицензии Exchange Online (Сравнить планы Exchange Online)

В вашем случае пользовательская лицензия называется «Exchange Online Archiving», которая представляет собой облачное решение для архивирования корпоративного класса, помогающее решать задачи архивирования, соблюдения нормативных требований и обнаружения электронных данных. Но он не предоставляет пользователю основной почтовый ящик в Exchange Online, поэтому пользователь получит ошибку 404 при попытке найти основной почтовый ящик.

Обновление №1:

Я предполагаю, что гибридная среда выглядит следующим образом: локальный Exchange + Exchange Online (Exchange Online Plan 1 или 2 + Exchange Online Archiving).

Почтовые ящики некоторых пользователей полностью находятся на Exchange Online, но почтовые ящики других находятся на локальном сервере Exchange (пожалуйста, поправьте меня, если у меня есть какие-либо недоразумения).

В настоящее время API Office 365 не поддерживает доступ к почтовым ящикам достижения.

Для пользователей, чьи основные почтовые ящики находятся на локальном сервере Exchange. Поскольку API Office 365 применяется к Exchange Online, но не применяется к локальному Exchange, вы не можете использовать API Office 365 для этих пользователей. введите здесь описание изображения

Для пользователей, чей основной почтовый ящик находится в Exchange Online (пользователи Exchange Online Plan 1 или 2), вы сможете использовать API Office 365 для доступа к почтовому ящику.

Для доступа к почтовому ящику на локальном сервере Exchange вы можете использовать ссылку API EWS.

person Jeffrey Chen    schedule 26.04.2016
comment
Я предоставляю только правильное имя пользователя. В приведенном выше запросе я намеренно удалил фактический идентификатор электронной почты пользователя из соображений конфиденциальности. Тот же случай с access_token. - person Naveen; 26.04.2016
comment
@Naveen, после сравнения плана Exchange Online Archiving и Exchange Online я обновил свой ответ. - person Jeffrey Chen; 27.04.2016
comment
Джеффри Чен - MSFT: сообщение об ошибке существования основного почтового ящика отличается. Если основной почтовый ящик пользователя не существует, тот же API возвращает (404, u'{error:{code:ErrorNonExistentMailbox,message:С SMTP-адресом не связан почтовый ящик.}}'). Ошибка почтового ящика наблюдалась для другого арендатора. В то время как тот, о котором я сообщил выше, говорит, что указанная папка не может быть найдена в магазине.. Так что это 2 разных сценария. - person Naveen; 27.04.2016
comment
@Naveen, спасибо, что указали на это. В настоящее время у меня нет учетной записи Exchange Online Archiving для тестирования. Но пробовали ли вы использовать outlook.office365.com/api/v1.0/ (удалите «/» перед «?»). - person Jeffrey Chen; 27.04.2016
comment
Чен, у меня нет доступа к вызовам изменений, поэтому я не смогу это проверить. Хотя тот же вызов работает и для других лицензий Office 365. - person Naveen; 27.04.2016
comment
Я пробовал тот же API и удалял «/» перед «?», но все равно безуспешно. Тот же результат. - person Naveen; 30.04.2016
comment
@Naveen, спасибо за попытку, я обновил свой ответ, см. обновление № 1. - person Jeffrey Chen; 02.05.2016