Почему EWS API возвращает ошибку ErrorNonExistentMailbox? - PullRequest
0 голосов
/ 11 февраля 2019

У меня есть несколько учетных записей в клиенте Office 365 с назначенными лицензиями .Когда я пытаюсь получить информацию (такую ​​как все папки и элементы) в почтовом ящике пользователя, используя операцию FindFolder из EWS API, которая содержит следующее тело:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
         xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2013"/>
    <t:ExchangeImpersonation>
      <t:ConnectingSID>
        <t:PrincipalName>name.surname@mydomain.be</t:PrincipalName>
      </t:ConnectingSID>
    </t:ExchangeImpersonation>
  </soap:Header>
  <soap:Body>
    <FindFolder xmlns="http://schemas.microsoft.com/exchange/services/2006/messages" Traversal="Shallow">
      <FolderShape>
        <t:BaseShape>AllProperties</t:BaseShape>
      </FolderShape>
      <IndexedPageFolderView MaxEntriesReturned="1000" BasePoint="Beginning" Offset="0"/>
      <ParentFolderIds>
        <t:DistinguishedFolderId Id="msgfolderroot"/>
      </ParentFolderIds>
    </FindFolder>
  </soap:Body>
</soap:Envelope>

(name.surname@mydomain.be - это имя участника-пользователя целевой учетной записи Office 365) Я получаю сообщение об ошибке со следующим телом:

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header>
    <h:ServerVersionInfo MajorVersion="15" MinorVersion="20" MajorBuildNumber="1601" MinorBuildNumber="24" Version="V2018_01_08" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
  </s:Header>
  <s:Body>
    <m:FindFolderResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:FindFolderResponseMessage ResponseClass="Error">
          <m:MessageText>Mailbox does not exist.</m:MessageText>
          <m:ResponseCode>ErrorNonExistentMailbox</m:ResponseCode>
          <m:DescriptiveLinkKey>0</m:DescriptiveLinkKey>
        </m:FindFolderResponseMessage>
      </m:ResponseMessages>
    </m:FindFolderResponse>
  </s:Body>
</s:Envelope>

Операция GetFolder дает мне тот же результат.

Эта ошибка обычно вызывается нелицензированной учетной записью почтового ящика.Но все мои пользователи имеют активную лицензию Exchange.Почему я получаю такой ответ об ошибке ErrorNonExistentMailbox?

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

У меня была эта проблема, когда я использовал службу обмена, почтовый ящик блокирует запросы после некоторых запросов (я не знаю почему ?!).(для меня после 200 запросов)

0 голосов
/ 12 февраля 2019

Убедитесь, что учетная запись, выполняющая сценарий EWS, имеет разрешения ApplicationImpersonation.Так что в этом случае ваша учетная запись должна иметь разрешения ApplicationImpersonation.

  • Перейдите к EAC в O365> Разрешения> добавьте ApplicationImpersonation в группу RBAC HygeneManagement, а затем добавьте себя в качестве участника.Это должно решить проблему.

В будущем, если вы когда-нибудь захотите выполнить TroubleShoot для ApplicationImpersonation, вы можете использовать EXRCA (https://testconnectivity.microsoft.com/)> вкладка O365> Тесты подключения веб-служб Microsoft Exchange> выбрать "Служба доступа к учетной записи (Разработчики) »и запустите тест.

...