C#Outlook VSTO - 无论如何使用部分字符串/通配符过滤器搜索全局地址列表?

时间:2013-02-21 14:35:32

标签: c# outlook vsto addressbook

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

我看到this code循环遍历地址列表中的所有条目,但我有超过100K的条目,所以我不想做一个循环,所以我想可能有一种方法来做一个前期过滤器搜索

我想搜索地址簿中以“ABC”开头的任何人作为示例。这可能吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分: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