Получить список папок для определенного электронного письма с помощью операции GetFolder из веб-службы Exchange с помощью сообщения SOAP - PullRequest
0 голосов
/ 09 октября 2019

Я использую SOAPUI для своего теста. У нас есть сервисный аккаунт, связанный с несколькими почтовыми ящиками. Я использую GetFolder для операций веб-служб Exchange, указав заголовок запроса с идентификатором электронной почты. Похоже, что EWS игнорирует предоставленный идентификатор электронной почты в заголовке Soap и возвращает только входящие по умолчанию (я предоставляю общий входящий почтовый ящик в заголовке, подключенный к учетной записи службы, которая используется для аутентификации). Пожалуйста, помогите определить мой запрос правильно или мне нужно указать какой-либо флаг, чтобы убедиться, что моя папка «Входящие» доступна из моего запроса?

Вот пример запроса.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
  <soap:Header>
   <t:ConnectingSID>
            <!--You have a CHOICE of the next 4 items at this level-->
            <t:PrincipalName>mysharedinbox@mydomain.com</t:PrincipalName>
             <t:PrimarySmtpAddress>mysharedinbox@mydomain.com</t:PrimarySmtpAddress>        
              <t:SmtpAddress>mysharedinbox@mydomain.com</t:SmtpAddress>

         </t:ConnectingSID>
  </soap:Header>
  <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="msgfolderroot"/>
      </ParentFolderIds>
    </FindFolder>
  </soap:Body>
</soap:Envelope>


1 Ответ

1 голос
/ 10 октября 2019

Если учетная запись службы имеет доступ к рассматриваемому почтовому ящику, вам необходимо использовать дочерний узел почтового ящика DistinguishedFolderId, чтобы указать почтовый ящик, к которому вы хотите получить доступ, например,

<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" />
  </soap:Header>
  <soap:Body>
    <m:GetFolder>
      <m:FolderShape>
        <t:BaseShape>AllProperties</t:BaseShape>
      </m:FolderShape>
      <m:FolderIds>
        <t:DistinguishedFolderId Id="inbox"><t:Mailbox><t:EmailAddress>mailbox@domain.com</t:EmailAddress></t:Mailbox></t:DistinguishedFolderId>
      </m:FolderIds>
    </m:GetFolder>
  </soap:Body>
</soap:Envelope>

Единственный раз, когда вы используете ConnectingSIDкогда вы используете олицетворение EWS (где у вас есть эти права) и заголовок олицетворения должен выглядеть как

<soap:Header>
  <t:ExchangeImpersonation>
    <t:ConnectingSID>
      <t:PrimarySmtpAddress>alisa@contoso.com</t:PrimarySmtpAddress>
    </t:ConnectingSID>
  </t:ExchangeImpersonation>
</soap:Header>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...