Tengo algunos problemas con el código que intenta encontrar un usuario en Active Directory al buscar en su dirección de correo electrónico. He intentado con 2 métodos pero a veces encuentro que el método FindOne() no arroja ningún resultado en algunas ocasiones. Si busco al usuario en el GAL en Outlook, veo la dirección de correo electrónico SMTP en la lista.Método correcto para buscar usuario de AD por dirección de correo electrónico de .NET
Mi objetivo final es confirmar que el usuario exista en AD. Solo tengo la dirección de correo electrónico como criterio de búsqueda, por lo que no hay forma de usar nombre o apellido.
Método 1: Usar la propiedad de correo:
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(mail=" + email + ")";
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
Método 2: proxyAddresses propiedad:
DirectorySearcher search = new DirectorySearcher(entry);
search.Filter = "(proxyAddresses=SMTP:" + email + ")"; // I've also tried with =smtp:
search.PropertiesToLoad.Add("mail");
SearchResult result = search.FindOne();
He intentado cambiar el caso de la entrada de dirección de correo electrónico, pero todavía no devuelve una resultado. ¿Hay algún problema aquí con la distinción entre mayúsculas y minúsculas? Si es así, ¿cuál es la mejor manera de resolverlo?
Creo que he encontrado el problema. DirectoryEntry.Path se estableció en un dominio específico. Cambié el código para usar el catálogo global y la búsqueda está funcionando. Volveré y lo actualizaré pronto. Respuestas en correo contra proxyAddresses es bienvenido si alguien tiene algo que agregar. –