2013-09-06 3 views
8

전자 메일 주소로 Active Directory 사용자를 쿼리하려면 어떻게해야합니까? 특정 사용자는 [email protected][email protected]과 같은 여러 전자 메일을 가질 수 있습니다. 주어진 이메일에 대해 어떻게 A/D 사용자를 돌려받을 수 있습니까?전자 메일 주소로 ActiveDirectory에서 사용자를 찾아보십시오

저는 C#으로 프로그래밍하고 있습니다.

당신은 다음과 같은 코드를 사용하여 AD를 검색 할 수 있습니다

답변

17

:

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()); 
     } 
    } 

€ :이

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

감사합니다 모든 메일 주소를 호스트 ProxyAddresses를 메일 주소를 검색합니다 - 두 번째 코드 세트가 잘 작동 . 언제 첫 번째 (LDAP) 방식을 사용하고 싶습니까? 그리고 LDAP : // 뒤에 오는 것? –

+0

첫 번째 코드는 기본 메일 주소가 정확하게 정의 된 경우에만 작동합니다. Ldap 후에 도메인이나 컨트롤러를 설정할 수 있습니다. –

관련 문제