C# - Find all email addresses for an Active Direct

2020-02-10 05:15发布

I'm trying to get all the email addresses associated to a given AD user.

For the user I have the domain and the login name (ex. DOMAIN\UserName) and I the AD is storing the email addresses in:

  1. The mail attribute.
  2. In proxyAddresses attributes.

So far, I don't know what C# API to use to connect to the AD, and how to properly filter by the user to fetch all the email addresses. I'm using .NET 3.5.

Thank you.

2条回答
甜甜的少女心
2楼-- · 2020-02-10 05:50

Here's a possible solution using various classes in the System.DirectoryServices namespace.

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());
}
查看更多
ゆ 、 Hurt°
3楼-- · 2020-02-10 05:59

Have you looked at the DirectoryEntry class. You can pull properties from there given you have the LDAP string set up. The propery for mail is "mail" ironic aint it ?

查看更多
登录 后发表回答