我想从交换服务器获取与特定电话号码匹配的用户。我特别希望GAL(全球地址列表)中的用户不是来自用户的个人电话簿。我尝试了几种方法,但没有用。
首先我使用了
service.ResolveName("SMTP:", ResolveNameSearchLocation.DirectoryOnly, true)
如此处所述:Get all contacts from exchange server,但我无法通过电话号码过滤此列表,该列表仅限于100个联系人。
然后我用过:
ContactsFolder.Bind(service, WellKnownFolderName.Contacts);
如此处所述:How to retrieve all contacts from Microsoft Exchange using EWS Managed API?和此处:How do I get address lists (NOT global) using Exchange WebServices in C#。这只会从个人电话簿中检索联系人。
最后,我按照此处所述进行了SOAP调用:How to get all users form Exchange with EWS,但这会返回所有没有电话的联系人 - 我必须再次通过id查询每个人以获取电话详细信息。最大的问题是我需要知道EWS无法检索的GAL的GUID。
是否有可能通过电话号码过滤GAL?有没有其他方法可以达到这个目的?
我的项目是用Visual Studio 2017中的C#.Net编写的。我已经部署了一个测试Exchange Server 2017(如果需要,我可以提供更多详细信息和访问权限)
答案 0 :(得分:0)
Exchange不允许您通过电话号码查询GAL。我建议您忘记使用EWS并直接查询目录,例如GAL中的任何内容只是用户或联系人对象的Active Directory属性,因此您可以使用LDAP直接查询目录,或者如果您使用Office365,则可以使用图API也可以做同样的事情。