Dav*_*len 10 c# active-directory
如何通过电子邮件地址查询ActiveDirectory用户?给定用户可以有多个电子邮件,例如john.smite@acme.com和jsmith@acme.com.对于给定的电子邮件,我该如何取回A/D用户?
我正在用C#编程.
Dan*_*eih 24
您可以使用以下代码搜索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());
}
}
Run Code Online (Sandbox Code Playgroud)
€:这将搜索托管所有邮件地址的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;
}
Run Code Online (Sandbox Code Playgroud)