rechercher un utilisateur dans ActiveDirectory par adresse électronique

Comment interroger un utilisateur ActiveDirectory par adresse électronique? Un utilisateur donné peut avoir plusieurs courriels tels que john.smite@acme.com et jsmith@acme.com. Pour un email donné, comment puis-je récupérer l’utilisateur A / D?

Je programme en C #.

Vous pouvez rechercher votre AD avec le code suivant:

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

€: Ceci recherchera l’adresse mail dans proxyAddresses qui héberge toutes les adresses mail

  public static SearchResultCollection FindAccountByEmail(ssortingng pEmailAddress) { ssortingng filter = ssortingng.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 ssortingng[] { "proxyAddresses", "objectGuid", "displayName", "distinguishedName" })) { searcher.ReferralChasing = ReferralChasingOption.All; SearchResultCollection result = searcher.FindAll(); return result; } } } } return null; }