1

我有一个 VSTO 插件,我正在尝试将地址列表中的人员列表显示到表单中。我想在我的全局地址列表中搜索,但只根据通配符进行搜索。

我看到这段代码循环遍历地址列表中的所有条目,但我有超过 100K 条目,所以我不想做一个循环,所以我认为可能有一种方法可以在搜索中进行预先过滤

例如,我想在通讯录中搜索姓名以“ABC”开头的任何人。这可能吗?

4

2 回答 2

1

我实际上会使用 EWS(Exchange 的 WCF 类 Web 服务),而不是使用 VSTO。这样,几乎可以在任何环境中调用代码。

http://vivekiyer.net/2010/07/17/querying-the-global-address-list-gal-via-exchange-web-services-ews/

于 2013-02-27T03:29:40.040 回答
0

Outlook 对象模型不会让您这样做。在扩展 MAPI 级别(仅限 C++ 或 Delphi)上,您可以针对 GAL 容器创建 PR_ANR 限制。

您还可以使用Redemption及其RDOAddressList .ResolveNameEx 方法来获取所有匹配条目的列表:

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set AdrrEntries = Session.AddressBook.GAL.ResolveNameEx("ABC")
  Debug.Print AdrrEntries.Count & " names were returned by ResolveNameEx:"
  for each AE in AdrrEntries
    Debug.Print AE.Name
  next
于 2013-02-21T14:46:40.337 回答