我如何从他们的Exchange电子邮件地址获得Active Directory用户名?
本文关键字:Active Directory 用户 电子邮件地址 他们的 Exchange | 更新日期: 2023-09-27 18:07:21
这是我试图使用的代码,但我没有真正得到任何地方与它:
public static string GetUserIdFromEmail(string emailAddress)
{
string displayName = string.Empty;
if (emailAddress.Contains("@sub.domain.edu") || emailAddress.Contains("@domain.edu"))
{
displayName = emailAddress.Split(new char[] { '@' })[0];
}
else
{
//no active directory account.
return string.Empty;
}
// set up domain context
using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain))
{
// find user by display name
try
{
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, displayName);
if (user != null)
{
return user.SamAccountName; // or UserPrincipleName
}
else
{
return string.Empty;
}
}
catch (Exception)
{
return "Error";
}
}
}
这些是我所知道的关于我们当前系统的事情:
电子邮件将是唯一的,并遵循一定的命名约定
命名约定为名首字母加全姓(dstanley)
Exchange上的一些旧帐户为first.last@email.com
我不知道我在做什么,但我知道我想要什么。
我希望能够采取一个用户域的电子邮件地址,并在活动目录中找到他们的记录。上面的代码是正确的还是我可以做一些更简单的事情?
为了使用标准活动目录库访问用户的电子邮件,您必须首先拥有相同帐户。这意味着这个问题的解决方案需要遍历每个samaccount并比较电子邮件地址,直到找到匹配的。
PsuedoCode
foreach(user in activedirectory)
{
if (user.email = targeted_email)
{
return matched samaccount
}
}
我不相信有更好的方法来解决这个问题,因此这是一个资源密集型的解决方案。