У меня возникли проблемы с кодом, который предназначен для поиска пользователя в Active Directory, путем поиска по их адресу электронной почты. Я пробовал 2 метода, но иногда обнаруживаю, что метод FindOne() не будет возвращать какие-либо результаты в некоторых случаях. Если я ищу пользователя в GAL в Outlook, я вижу адрес электронной почты SMTP.
Моя конечная цель - подтвердить, что пользователь существует в AD. У меня есть только адрес электронной почты в качестве критериев поиска, поэтому нельзя использовать имя или фамилию.
Способ 1. Использование свойства почты:
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();
Я попытался изменить регистр ввода адреса электронной почты, но он все равно не возвращает результат. Есть ли проблема с чувствительностью к регистру? Если да, то каков наилучший способ его решения?