【问题标题】:Searching Outlook Global Address List搜索 Outlook 全局地址列表
【发布时间】:2010-03-22 11:33:21
【问题描述】:

我正在像这样从 Outlook 中提取全局地址列表...

 Microsoft.Office.Interop.Outlook.Application oApp = new Microsoft.Office.Interop.Outlook.Application();
 AddressList gal = oApp.Session.GetGlobalAddressList();

...目的是最终能够在我自己的应用程序中搜索它以检索联系信息,然后我可以将这些信息提供给一个隐藏电子邮件的方法。不幸的是,考虑到我自己的 GAL 有大约 20K 条目(客户更多)使用 foreach 或其他东西在可接受的时间范围内根本不起作用。

我想将像“Tom”这样的字符串传递给一个方法并让它返回一个可能的联系人列表。除了实际打开 Outlook 并在那里创建邮件之外,这是否可能?

注意:还有几个与此类似的其他问题,但大多数似乎都没有好的答案。我希望我有更多的运气。

【问题讨论】:

    标签: c#


    【解决方案1】:

    好的,经过大量的谷歌搜索和压力,我仍然没有想出一个好的方法来做到这一点。我的解决方法是使用this MSDN example. 搜索用户的本地联系人文件夹我的任何用户的本地联系人文件夹通常远低于一千(实际上通常远低于一百),因此搜索它没有真正的开销.

    如果用户本地目录一无所获(或者他们尝试使用我的应用程序电子邮件功能向无效地址发送电子邮件),那么我让 Outlook 为我提供一个非模态“新电子邮件”窗口,其中包含所有为我构建的正文、附件、标题等,用户可以使用 Outlook 搜索功能从 GAL 中查找地址。

    有点像……

    if(CantFindAddressesLocally)
    {
         MailItem email = (MailItem)(oApp.CreateItem(OlItemType.olMailItem));
         email.Subject = "MY SUBJECT";
         email.Body = "MY BODY";
         email.Attachments.Add(myAttachment);
         email.Display(false) //popup an Outlook "New Email" window
    }
    

    诚然笨拙,因为它需要使用 Outlook 界面(并避免这是首先整合电子邮件功能的全部要点),但至少它会生成一封电子邮件 - 留给用户的唯一事情就是输入一个地址实际上是有效的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-10
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多