電子メール アドレスで 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;
}