Workflow 从Sitecore工作流向特定角色的所有用户发送电子邮件

Workflow 从Sitecore工作流向特定角色的所有用户发送电子邮件,workflow,sitecore,Workflow,Sitecore,如何向Sitecore角色中的所有用户发送工作流通知?例如,工作流的下一步是由法律部门批准或拒绝。如何让Sitecore向所有具有合法审批人角色的用户发送电子邮件?我试图避免维护通讯组列表,并希望动态获取用户的电子邮件地址。Sitecore安全性基于ASP.NET安全模型。因此,您可以使用标准ASP.NET API获取特定角色的用户: var users=System.Web.Security.Roles.GetUsersInRole(“yourdomain\yourrole”); 然后遍历找

如何向Sitecore角色中的所有用户发送工作流通知?例如,工作流的下一步是由法律部门批准或拒绝。如何让Sitecore向所有具有合法审批人角色的用户发送电子邮件?我试图避免维护通讯组列表,并希望动态获取用户的电子邮件地址。

Sitecore安全性基于ASP.NET安全模型。因此,您可以使用标准ASP.NET API获取特定角色的用户:

var users=System.Web.Security.Roles.GetUsersInRole(“yourdomain\yourrole”);
然后遍历找到的用户并读取电子邮件属性:

foreach(用户中的var用户)
{
var membershipUser=System.Web.Security.Membership.GetUser(用户);
var email=membershipUser.email;
//使用此电子邮件将消息发送给该用户
}

我可能在语法细节上弄错了,但我相信您可以在了解总体思路的情况下找到答案。

要解决间接成员身份问题,您可以使用
Sitecore.Security.Accounts.RolesInRolesManager
,它还返回作为指定角色间接部分的用户帐户

RolesInRolesManager.GetUsersInRole(Role.FromName(roleName),true)

这些用户担任Sitecore角色。如何获得Sitecore角色中的用户?我编辑了这个问题。嗯,似乎我没有澄清这一点,你的问题也没有明确提到——你使用的是什么版本的Sitecore?我的意思是,6.0之前的版本有自己的安全系统和相关API。因此,如果您使用的是5.X,上面的示例将不适用于您。。。否则,它应该通过标准ASP.NET安全API对Sitecore角色和用户起作用。角色中的角色如何?我还没有研究过这个问题,但是Sitecore如何在普通的成员资格提供者中处理这个问题呢?啊,角色中的角色是完全自定义的。它构建在ASP.NET安全性之上。基本上,它只是一个存储其他角色中角色成员身份的SQL表,以及一个通过API解决此问题的提供程序类。您可以在Reflector中浏览RolesInRolesProvider以了解更多详细信息。