まずはシンプルに、ドメインユーザーでログインしている場合に、表示名を条件にメールアドレスを取得する C# のサンプルコードです。
System.DirectoryServices.dll を使います。
var directoryEntry = new System.DirectoryServices.DirectoryEntry();
var directorySearcher = new System.DirectoryServices.DirectorySearcher(directoryEntry); //引数を渡さなくてもいいかも
var displayName = "山田太郎"; // 「*」をワイルドカードとして使える
directorySearcher.Filter = String.Format("(&(objectClass=user)(DisplayName={0}))", displayName);
var result = directorySearcher.FindOne();
// null -> 該当 user が見つからない
var entry = result.GetDirectoryEntry();
var mailAddress = (string)entry.Properties["mail"].Value;
// "" -> mail が登録されていない
アカウント名で検索する場合は
DisplayName
を samAccountName
に変えればいいです。
アカウント名と表示名を OR で検索したい場合は、
DisplayName={0}
を |(samAccountName={0})(DisplayName={0})
にすればいいです。
逆にメールアドレスがわかっている場合は
DisplayName={0}
を mail={0}
にすればいいです。
問い合わせ先のドメインを指定する場合は、
directoryEntry.Path = "LDAP://hoge.co.jp";
のように指定すればいけるようです。
このあたりは、 LDAP で検索をかけるといろいろ情報が出てきます。
(が、体系的にまとまった解りやすいサイトは見つけられませんでした)
メールアドレス以外の情報も entry.Properties
に含まれているので
応用してみてください。