我正在尝试在AD中获取用户的电子邮件地址,但没有成功。
String account = userAccount.Replace(@"Domain\", "");
DirectoryEntry entry = new DirectoryEntry();
try {
DirectorySearcher search = new DirectorySearcher(entry);
search.PropertiesToLoad.Add("mail"); // e-mail addressead
SearchResult result = search.FindOne();
if (result != null) {
return result.Properties["mail"][0].ToString();
} else {
return "Unknown User";
}
} catch (Exception ex) {
return ex.Message;
}
任何人都能看到这个问题或指出正确的方向吗?
发布于 2017-08-03 03:14:27
你们工作太辛苦了:
// Look up the current user's email address
string eMail = UserPrincipal.Current.EmailAddress;
发布于 2009-04-24 12:07:44
你忘了一个过滤器。
在调用FindOne之前尝试添加以下内容:
search.Filter = String.Format("(sAMAccountName={0})", account);
发布于 2020-03-25 17:55:41
这个怎么样?
public string GetEmailFromSamAccountName(string samAccountName, string domain="YOURCOMPANY")
{
using (var principalContext = new PrincipalContext(ContextType.Domain, domain))
{
var userPrincipal = UserPrincipal.FindByIdentity(principalContext, samAccountName);
return userPrincipal.EmailAddress;
}
}
https://stackoverflow.com/questions/785527
复制相似问题