php ews从Exchange Server返回超过1,000个联系人

时间:2015-06-25 02:32:50

标签: php outlook exchangewebservices exchange-server-2010

如何从Exchange Server 2010中恢复一个用户的所有联系人,使用https://github.com/jamesiarmes/php-ews API将响应限制为1000?我尝试过分页,但我需要一些示例代码才能使其正常工作。

2 个答案:

答案 0 :(得分:1)

我无法为您提供一个示例库(我使用自己的分叉,Garethp/php-ews)我建议您查看(它的PSR-2和PSR-4兼容)实际更新和维护),但它们基本上都有相同的方法:帮助您编写发送到服务器的XML。因此,如果您想要一个示例,您可以查看MSDN页面并尝试复制它们作为PHP对象的XML。这是您要发送的内容

<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="Exchange2010" />
  </soap:Header>
  <soap:Body>
    <m:FindItem Traversal="Shallow">
      <m:ItemShape>
        <t:BaseShape>AllProperties</t:BaseShape>
      </m:ItemShape>
      <m:IndexedPageItemView MaxEntriesReturned="3" Offset="5" BasePoint="Beginning" />
      <m:SortOrder>
        <t:FieldOrder Order="Ascending">
          <t:FieldURI FieldURI="contacts:DisplayName" />
        </t:FieldOrder>
      </m:SortOrder>
      <m:ParentFolderIds>
        <t:DistinguishedFolderId Id="contacts" />
      </m:ParentFolderIds>
    </m:FindItem>
  </soap:Body>
</soap:Envelope>

请注意<m:IndexedPageItemView MaxEntriesReturned="3" Offset="5" BasePoint="Beginning" />,这就是您在结果列表中查找下一页的方式

答案 1 :(得分:0)

您是否尝试使用不同的字母作为缩写?我想到了这样的事情:

$request->ContactsView->InitialName = 'A';
$request->ContactsView->FinalName = 'B';

如果您有超过1,000个以字母A开头的联系人,那么这可能不会起作用。