如何从 Active Directory 获取用户的电子邮件地址?
- 作者: 霜霜的坐骑
- 来源: 51数据库
- 2022-10-21
问题描述
我试图在 AD 中获取用户的电子邮件地址,但没有成功.
I am trying to get a user's email address in AD without success.
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;
}
有人能看到问题或指出正确的方向吗?
Can anyone see the issue or point in the right direction?
推荐答案
免责声明:此代码不搜索 单个完全匹配,所以对于 domainj_doe 它可能会返回domainj_doe_from_external_department 的电子邮件地址(如果也存在类似名称的帐户).如果此类行为不受欢迎,则使用 samAccountName 过滤器而不是 anr 下面使用或过滤结果 另外.
Disclaimer: This code doesn't search for a single exact match, so for domainj_doe it may return domainj_doe_from_external_department's email address if such similarly named account also exists. If such behaviour is undesirable, then either use a samAccountName filter intead of an anr one used below or filter the results additionally.
我已成功使用此代码(其中帐户"是不带域的用户登录名(域帐户):
I have used this code successfully (where "account" is the user logon name without the domain (domainaccount):
// get a DirectorySearcher object
DirectorySearcher search = new DirectorySearcher(entry);
// specify the search filter
search.Filter = "(&(objectClass=user)(anr=" + account + "))";
// specify which property values to return in the search
search.PropertiesToLoad.Add("givenName"); // first name
search.PropertiesToLoad.Add("sn"); // last name
search.PropertiesToLoad.Add("mail"); // smtp mail address
// perform the search
SearchResult result = search.FindOne();
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
