获取AD Group User的电子邮件

时间:2015-01-22 06:07:07

标签: c# asp.net email sharepoint-2010 active-directory

我们如何检索属于特定群组的用户的电子邮件ID。我有一个应用程序,我需要从sharepoint发送电子邮件到安全组。我使用此代码获得了用户列表。

PrincipalContext principal = new PrincipalContext(ContextType.Domain);
GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(principal,  picker.DisplayText);
var members = groupPrincipal.GetMembers(true);

members变量应返回组用户,因此我需要从此集合中选择每个用户的电子邮件ID。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

有几种不同的方法可以做到这一点。这是两个简单的选项,几行代码。

如果您的UPN符合您的电子邮件地址,则 可以执行以下操作:

var userEmails = new List<string>();
foreach (var member in members)
{
    userEmails.Add(member.UserPrincipalName);
}

如果这不够严格并且您想要实际提取电子邮件,最简单的方法可能是拉取用户主体并阅读它的电子邮件属性。

foreach (var member in members)
{
    var user = UserPrincipal.FindByIdentity(context, member.SamAccountName);
    userEmails.Add(user.EmailAddress);
}

如果您不喜欢这些选项,您可以直接读取DirectoryEntry或读取属性,但除了速度之外我不会去那些路线。

另外,请添加适当的错误处理等。