我们如何检索属于特定群组的用户的电子邮件ID。我有一个应用程序,我需要从sharepoint发送电子邮件到安全组。我使用此代码获得了用户列表。
PrincipalContext principal = new PrincipalContext(ContextType.Domain);
GroupPrincipal groupPrincipal = GroupPrincipal.FindByIdentity(principal, picker.DisplayText);
var members = groupPrincipal.GetMembers(true);
members变量应返回组用户,因此我需要从此集合中选择每个用户的电子邮件ID。请帮我解决这个问题。
答案 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或读取属性,但除了速度之外我不会去那些路线。
另外,请添加适当的错误处理等。