C# - 查找Active Directory用户的所有电子邮件地址

pgb*_*pgb 9 .net c# active-directory

我正在尝试获取与给定AD用户关联的所有电子邮件地址.

对于用户,我有域名和登录名(例如DOMAIN\UserName),而AD则将电子邮件地址存储在:

  1. 邮件属性.
  2. proxyAddresses属性中.

到目前为止,我不知道用什么C#API连接到AD,以及如何正确地过滤用户以获取所有电子邮件地址.我正在使用.NET 3.5.

谢谢.

Don*_*nut 33

这是使用System.DirectoryServices命名空间中的各种类的可能解决方案.

string username = "username";
string domain = "domain";

List<string> emailAddresses = new List<string>();

PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, domain);
UserPrincipal user = UserPrincipal.FindByIdentity(domainContext, username);

// Add the "mail" entry
emailAddresses.Add(user.EmailAddress);

// Add the "proxyaddresses" entries.
PropertyCollection properties = ((DirectoryEntry)user.GetUnderlyingObject()).Properties;
foreach (object property in properties["proxyaddresses"])
{
   emailAddresses.Add(property.ToString());
}
Run Code Online (Sandbox Code Playgroud)

  • 此示例也需要引用"System.DirectoryServices.AccountManagement". (5认同)
  • +1这比接受的答案更好,因为a)你不必离开这个网站来获得帮助,b)它没有所有神秘的LDAP查询内容. (4认同)

Jon*_*onH 0

您看过 DirectoryEntry 类吗?如果您已设置 LDAP 字符串,则可以从那里提取属性。邮件的属性是“mail”,讽刺不是吗?