Как составить список почтовых ящиков общедоступных папок через EWS? - PullRequest
0 голосов
/ 20 сентября 2018

Я не могу найти какое-либо решение для правильного перечисления всех почтовых ящиков общих папок и общих папок с использованием API-интерфейса SOAP.Я нашел только команды powershell или методы C #.Если кто-нибудь знает, как получить / просмотреть все общие папки, пожалуйста, предоставьте мне решение.

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Во-первых, вам нужно определить значение заголовка X-AnchorMailbox, используя SOAP, и сделать запрос автообнаружения, чтобы определить значение X-PublicFolderInformation.

Во-вторых, использовать FindFolder, а затем обходной запрос для каждогоУровень папки, начиная с Root, например:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2013_SP1" />
  </soap:Header>
  <soap:Body>
    <m:FindFolder Traversal="Shallow">
      <m:FolderShape>
        <t:BaseShape>AllProperties</t:BaseShape>
      </m:FolderShape>
      <m:IndexedPageFolderView MaxEntriesReturned="1" Offset="0" BasePoint="Beginning" />
      <m:Restriction>
        <t:IsEqualTo>
          <t:FieldURI FieldURI="folder:DisplayName" />
          <t:FieldURIOrConstant>
            <t:Constant Value="My Public Contacts" />
          </t:FieldURIOrConstant>
        </t:IsEqualTo>
      </m:Restriction>
      <m:ParentFolderIds>
        <t:FolderId Id="AQEuAAADy/LIWjRCp0GFb0W6aGPbwwEARg5aCLUc8k6wLfl1c0a/2AAAAwIAAAA=" ChangeKey="AQAAABYAAABGDloItRzyTrAt+XVzRr/YAABdo/XB" />
      </m:ParentFolderIds>
    </m:FindFolder>
  </soap:Body>
</soap:Envelope>

Ссылка от:

Маршрут запросов иерархии общих папок

Маршрут общедоступныйЗапросы содержимого папки

0 голосов
/ 21 сентября 2018

Для перечисления общедоступных папок необходимо использовать операцию FindFolder, а затем выполнить запрос поверхностного обхода для каждого уровня папки, начиная с корневого (поскольку вы не можете выполнять глубокие обходы), например,

    <?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:Body>
        <FindFolder Traversal="Shallow" xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
        <FolderShape>
            <t:BaseShape>Default</t:BaseShape>
        </FolderShape>
        <ParentFolderIds>
            <t:DistinguishedFolderId Id="publicfoldersroot"/>
        </ParentFolderIds>
        </FindFolder>
    </soap:Body>
    </soap:Envelope>

Youне удается получить почтовые ящики общедоступных папок с помощью EWS. То, что вы должны делать на Office365, - это обнаружение правильного почтового ящика PublicFolder для включения в заголовки маршрутизации, поэтому вы должны прочитать https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-route-public-folder-hierarchy-requests и https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/how-to-route-public-folder-content-requests (которые оба имеютПримеры XML для звонков, которые вам нужны).

...