2013-09-06 5 views
8

Как я могу запросить пользователя ActiveDirectory по электронной почте? У данного пользователя может быть несколько электронных писем, таких как [email protected] и [email protected] Как получить адрес электронной почты для данного письма?искать пользователя в ActiveDirectory по электронной почте

Я программирую на C#.

ответ

17

Вы можете искать Ваш AD с помощью следующего кода:

DirectoryEntry adEntry = null; 

    private void SetADInfoAndCredentials() 
    { 
     adEntry = new DirectoryEntry("LDAP://" + ad_textBox.Text); 
     adEntry.Username = user_textBox.Text; 
     adEntry.Password = pw_textBox.Text; 
    } 

    private void SearchForMailInAD() 
    { 
     DirectorySearcher adSearcher = new DirectorySearcher(adEntry); 
     adSearcher.Filter = ("mail=" + mail_textBox.Text); 
     SearchResultCollection coll = adSearcher.FindAll(); 
     foreach (SearchResult item in coll) 
     { 
      foundUsers_listBox.Items.Add(item.GetDirectoryEntry()); 
     } 
    } 

€: Это будет искать почты в ProxyAddresses которых размещены все адреса электронной почты

public static SearchResultCollection FindAccountByEmail(string pEmailAddress) 
    { 
     string filter = string.Format("(proxyaddresses=SMTP:{0})", email); 

     using (DirectoryEntry gc = new DirectoryEntry("LDAP:")) 
     { 
      foreach (DirectoryEntry z in gc.Children) 
      { 
       using (DirectoryEntry root = z) 
       { 
        using (DirectorySearcher searcher = new DirectorySearcher(root, filter, new string[] { "proxyAddresses", "objectGuid", "displayName", "distinguishedName" })) 
        { 
         searcher.ReferralChasing = ReferralChasingOption.All; 
         SearchResultCollection result = searcher.FindAll(); 

         return result; 
        } 
       } 
      } 
     } 
     return null; 
    } 
+0

Спасибо - Второй набор кода отлично работает , Когда я захочу использовать первый (LDAP) подход? И что происходит после LDAP: //? –

+0

Первый код будет работать только точно, какой первичный адрес электронной почты определен. После Ldap вы должны установить свой домен или ваш контроллер –

Смежные вопросы