Sto riscontrando alcuni problemi con il codice destinato a trovare un utente in Active Directory effettuando una ricerca sul proprio indirizzo di posta elettronica. Ho provato 2 metodi, ma a volte sto trovando che il metodo FindOne() non restituirà alcun risultato in alcune occasioni. Se cerco l'utente nel GAL in Outlook, vedo l'indirizzo email SMTP elencato.Metodo corretto per cercare l'utente AD tramite indirizzo di posta elettronica da .NET
Il mio obiettivo finale è confermare che l'utente esista in AD. Ho solo l'indirizzo email come criterio di ricerca, quindi non c'è modo di usare il nome o il cognome.
Metodo 1: Utilizzo di proprietà mail:
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(mail=" + email + ")";
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
Metodo 2: proxyAddresses proprietà:
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(proxyAddresses=SMTP:" + email + ")"; // I've also tried with =smtp:
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
Ho provato a cambiare il caso dell'ingresso di indirizzo di posta elettronica, ma ancora non restituisce un risultato. C'è un problema qui con la distinzione tra maiuscole e minuscole? Se sì, qual è il modo migliore per risolverlo?
Penso di aver trovato il problema. DirectoryEntry.Path era con ambito per un dominio specifico. Ho cambiato il codice per utilizzare il catalogo globale e la ricerca funziona. Tornerò e aggiornerò presto. Le risposte sulla posta rispetto a proxyAddresses sono le benvenute se qualcuno ha qualcosa da aggiungere. –