2015-04-07 3 views
1

В настоящее время я разрабатываю клиентское приложение EWS в iOS, поэтому я использую веб-службы Exchange для связи с сервером Exchange 2010 (простой XML, в отличие от управляемого API). Я знаю, как получить доступ к почтовому ящику и календарю делегата, а также предоставить или удалить доступ делегата к почтовому ящику, но перед тем, как получить доступ, мне нужно сначала найти эти почтовые ящики. То есть, я хочу найти все почтовые ящики, к которым мой текущий пользователь имеет доступ (в отличие от всех пользователей, имеющих доступ к текущему почтовому ящику, который хорошо документирован).Найти делегатов почтового ящика с веб-службами Exchange (EWS)

Этот вопрос с 2011 года (EWS API Delegate List) указывает, что нет возможности, но без каких-либо ссылок. Я не нашел никаких ресурсов и никаких указаний в документации, но Outlook легко идентифицирует эти почтовые ящики. Возможно, он использует некоторый внутренний API, я не смог найти соответствующие запросы в его связи с сервером.

Как найти эти почтовые ящики? Или еще нет способа добиться этого, считая, что ответ с 2011 года был правильным? Если да, то как Outlook справляется с этим?

ответ

1

Существует несколько способов предоставления доступа к почтовому ящику других пользователей, один из методов - через делегаты Outlook, который в основном изменяет Ace Папки, а также объект FreeBusy в почтовом ящике пользователей. Другой метод, если Admin предоставляет кому-то полный доступ к почтовому ящику с помощью Add-MailboxPermission, а затем разрешает автоматическое сопоставление http://www.msexchange.org/articles-tutorials/exchange-server-2010/management-administration/mailbox-auto-mapping-exchange-server-2010-part1.html почтового ящика. Это означает, что Outlook автоматически подключит Почтовый ящик в качестве дополнительного почтового ящика.

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

<?xml version="1.0" encoding="utf-8" ?> 
 
<soap:Envelope xmlns:a="http://schemas.microsoft.com/exchange/2010/Autodiscove 
 
r" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:xsi="http://www.w3.org 
 
/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
 
    <soap:Header> 
 
    <a:RequestedServerVersion>Exchange2010_SP2</a:RequestedServerVersion> 
 
    <wsa:Action>http://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscover/GetUserSettings</wsa:Action> 
 
    <wsa:To>https://autodiscover-s.outlook.com/autodiscover/autodiscover.svc</wsa:To> 
 
    </soap:Header> 
 
    <soap:Body> 
 
    <a:GetUserSettingsRequestMessage xmlns:a="http://schemas.microsoft.com/exchange/2010/Autodiscover"> 
 
     <a:Request> 
 
     <a:Users> 
 
      <a:User> 
 
      <a:Mailbox>[email protected]</a:Mailbox> 
 
      </a:User> 
 
     </a:Users> 
 
     <a:RequestedSettings> 
 
      <a:Setting>AlternateMailboxes</a:Setting> 
 
     </a:RequestedSettings> 
 
     </a:Request> 
 
    </a:GetUserSettingsRequestMessage> 
 
    </soap:Body> 
 
</soap:Envelope>

Для делегатов Outlook, его немного другая история, если некоторые случайный пользователь добавляет вас в качестве делегата (и не отправляет вам резюме), или сообщит вам, что ничего не произойдет, и Outlook не покажет или не узнает об этом. Однако, если вы знаете, что кто-то делегировал вам доступ к своему календарю, например, и затем вы открываете этот календарь в Outlook при первом запуске, он добавит ярлык Wonderbar (Navigational) https://msdn.microsoft.com/en-us/library/ee202589(v=exchg.80).aspx, который Outlook (и OWA) будет использовать в в будущем, чтобы показать этот календарь по умолчанию. Вы можете использовать эти ярлыки Nav в почтовом ящике, запросив их в папке CommonViews, например EWS - Access All Shared Calendars. (обратите внимание, если вы используете новый REST API в Office365, вы можете сделать это изначально в API)

Смежные вопросы