У меня возникли некоторые проблемы с кодом, который предназначен для поиска пользователя в Active Directory путем поиска по его адресу электронной почты. Я пробовал 2 метода, но иногда обнаруживаю, что метод FindOne () в некоторых случаях не возвращает никаких результатов. Если я смотрю пользователя в GAL в Outlook, я вижу SMTP-адрес электронной почты в списке.
Моя конечная цель - подтвердить, что пользователь существует в AD. У меня есть только адрес электронной почты в качестве критерия поиска, поэтому нельзя использовать имя или фамилию.
Способ 1. Использование свойства mail:
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(mail=" + email + ")";
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
Метод 2: свойство proxyAddresses:
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(proxyAddresses=SMTP:" + email + ")"; // I've also tried with =smtp:
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
Я попытался изменить регистр ввода адреса электронной почты, но он по-прежнему не возвращает результат. Есть ли здесь проблема с чувствительностью к регистру? Если да, то как лучше всего это решить?