Active Directory - 按多个属性搜索

时间:2014-05-02 16:36:10

标签: c# asp.net search active-directory visual-studio-2013

我正在制作一个用Visual Studio 2013,ASP,C#设计的网络程序。

我正在寻找一种方法,可以搜索Active Directory以获取电子邮件地址,以便在生成报告时发送自动电子邮件。我的要求是根据个人的职位和所在地(即纽约,达拉斯等)获取个人的电子邮件地址。

我正在考虑创建两个列表(一个用于TO:地址,另一个用于CC:地址)。我打算使用列表,因为收到电子邮件的人数因网站位置和报告类型而异。

我的问题是我不知道如何设置搜索参数以填充这些列表。我所做的研究表明我需要使用System.DirectoryServices来创建DirectorySearcher。

这一切都将在"提交报告"按钮点击事件。

1 个答案:

答案 0 :(得分:0)

为您需要的filter创建properties

     string filter = @"(&(objectCategory=Person)(physicalDeliveryOfficeName=Dallas))";

然后搜索邮件地址:

     List<string> list = GetMail(filter);

  List<string> GetMail(string SearchFilter)
  {
     List<string> MailAddresses = new List<string>();
      using (DirectorySearcher directorySearcher = new DirectorySearcher())
      {
      directorySearcher.Filter = SearchFilter;
      SearchResultCollection resultCollection = directorySearcher.FindAll();

     foreach (SearchResult searchResult in resultCollection)
      {
         try
         {
            MailAddresses.Add(searchResult.Properties["mail"][0].ToString());
         }
         catch {
                //Maybe fill a list of errors here.
               }
      } 
  }
     return MailAddresses;
  }