我如何通过电子邮件地址查询ActiveDirectory用户?给定的用户可以有多个电子邮件地址,例如john.smite@acme.com和jsmith@acme.com。对于给定的电子邮件地址,如何找回A/D用户?
我正在使用C#编程。
我如何通过电子邮件地址查询ActiveDirectory用户?给定的用户可以有多个电子邮件地址,例如john.smite@acme.com和jsmith@acme.com。对于给定的电子邮件地址,如何找回A/D用户?
我正在使用C#编程。
您可以使用以下代码搜索您的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;
}
我不确定我是否漏掉什么,但是根据电子邮件地址查找AD用户可以更简单地完成:
var context = new PrincipalContext(ContextType.Domain);
var userPrincipal = UserPrincipal.FindByIdentity(context, emailAddress);
mail=
的?难道 AD 不是将电子邮件存储在E-mail
下吗? - Yousuf Khan