C # - Найти все адреса электронной почты для пользователя Active Directory - PullRequest
8 голосов
/ 22 октября 2009

Я пытаюсь получить все адреса электронной почты, связанные с данным пользователем AD.

Для пользователя у меня есть домен и логин (например, DOMAIN \ UserName), и я AD хранит адреса электронной почты в:

  1. Почтовый атрибут.
  2. В proxyAddresses атрибутах.

Пока что я не знаю, какой API C # использовать для подключения к AD, и как правильно фильтровать пользователя для получения всех адресов электронной почты. Я использую .NET 3.5.

Спасибо.

Ответы [ 2 ]

32 голосов
/ 22 октября 2009

Вот возможное решение с использованием различных классов в пространстве имен 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());
}
0 голосов
/ 22 октября 2009

Вы смотрели на класс DirectoryEntry. Вы можете получить свойства оттуда, если у вас есть настроенная строка LDAP. Почта для почты - это ирония, не так ли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...