如何使用 Exchange Web 服务 (EWS) 检索全局联系人?
我正在使用 EWS,希望从该公司的交易所获取全球地址列表。我知道如何检索个人联系人列表。
API 文档中的所有示例都涉及更新用户信息,但没有具体说明如何检索它们。
我什至尝试了以下方法来列出文件夹,但它没有产生正确的结果。
private static void ListFolder(ExchangeService svc, FolderId parent, int depth) {
string s;
foreach (var v in svc.FindFolders(parent, new FolderView(int.MaxValue))) {
Folder f = v as Folder;
if (f != null) {
s = String.Format("[{0}]", f.DisplayName);
Console.WriteLine(s.PadLeft(s.Length + (depth * 2)));
ListFolder(svc, f.Id, depth + 1);
try {
foreach (Item i in f.FindItems(new ItemView(20))) {
Console.WriteLine(
i.Subject.PadLeft(i.Subject.Length + ((depth + 1) * 2)));
}
} catch (Exception) {
}
}
}
}
虽然问题已经提出(如何获取联系人列表来自 Exchange Server?)此问题专门涉及使用 EWS 获取全局地址列表,而此问题则寻求一般级别的建议。
I am using EWS and wish to obtain the global address list from exchange for the company. I know how to retrieve the personal contact list.
All the samples in the API documentation deal with updating user information but not specifically how to retrieve them.
I've even tried the following to list the folders but it doesn't yeild the correct results.
private static void ListFolder(ExchangeService svc, FolderId parent, int depth) {
string s;
foreach (var v in svc.FindFolders(parent, new FolderView(int.MaxValue))) {
Folder f = v as Folder;
if (f != null) {
s = String.Format("[{0}]", f.DisplayName);
Console.WriteLine(s.PadLeft(s.Length + (depth * 2)));
ListFolder(svc, f.Id, depth + 1);
try {
foreach (Item i in f.FindItems(new ItemView(20))) {
Console.WriteLine(
i.Subject.PadLeft(i.Subject.Length + ((depth + 1) * 2)));
}
} catch (Exception) {
}
}
}
}
While the question has already been raised (How to get contact list from Exchange Server?) this question deals specifically with using EWS to get the global address list while this question asks for advice on a general level.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用下面的代码片段在指定文件夹中获取 ItemType 对象
然后将 ItemType 对象转换为 ContactItemType (对于联系人对象)...
you may got ItemType objects in a specifiedfolder with the code snippet below
and then cast ItemType objects to ContactItemType (for contact objects) ....
我刚刚做了一件类似的事情。但是,我无法通过 Exchange 获取联系人列表,因为这只获取拥有邮箱的用户,而不一定是所有用户或组。我最终通过 AD 获取了所有用户,
这里是获取 AD 中所有联系人的代码。您所需要的只是全局地址列表的folderID,可以通过在AD 服务器上使用ADSI.msc 工具并浏览到全局地址列表文件夹来获取该文件夹ID,查看属性并获取“声称的搜索”的值。在我的系统中,全局地址列表的搜索路径是“(&(objectClass=user)(objectCategory=person)(mailNickname=)(msExchHomeServerName=))”
I just did a similiar thing. However, I was unable to get the list of contacts via Exchange since that only gets users that have mailboxes, and not necessarily all users or groups. I eventually ended up getting all the users via AD
here is code to get all the contacts in AD. All you need is the folderID of the global address list which can be gotten from using the ADSI.msc tool on your AD server and browsing to the Global address list folder, look at properties and grab the value of the "purported search". In my system the searchPath for the global address list is"(&(objectClass=user)(objectCategory=person)(mailNickname=)(msExchHomeServerName=))"