繁体   English   中英

向具有特定角色的用户发送电子邮件

[英]Sending e-mails to users in specific roles

我正在使用基于SimpleMembership的自定义成员资格提供程序以及ASP.NET的DefaultRoleProvider。 每当将新项目添加到数据库时,我都希望向站点管理员发送电子邮件。

这是用户模型:

public class Users
{
    public int UserId { get; set; }
    public string UserName { get; set; }
    public string FullName { get; set; }
    public string Email { get; set; }

    public IEnumerable<Role> Roles { get; set; }
}

我尝试使用以下代码将管理员角色中每个用户的用户名列出到ViewData中,并且工作正常:

string userRoles = string.Concat(Roles.GetUsersInRole("Administrator"));
ViewData.Add("UserRoles", userRoles);

如何将电子邮件字段而不是用户名输出到ViewBag中,并将它们返回到名为UserMailer的类中?

对于每个用户名,您都必须从成员资格中检索用户对象,并使用来自用户对象的电子邮件。

MembershipProvider具有方法GetUser(string username, bool UpdateLastSeenTimestamp) 这使您返回具有Email属性的对象MembershipUser

因此,对于从角色提供者那里获得的每个用户名,您都需要调用该方法:

// pseudocode, not tested
var usernames = Roles.GetUsersInRole("Administrator");
var users = new List<MembershipUser>();
var emails = new List<String>();
foreach(var username in usernames){
    var user = MembershipProvider.GetUser(username, false);
    users.Add(user);
    emails.Add(user.Email);
}

因此users包含用户对象列表-如果您需要在某个地方使用它们。 emails将包含这些用户的电子邮件列表。

ps不要使用ViewData将电子邮件传递到您的组件(Mailer)。 ViewData仅用于在视图之间传递信息,而不是在类之间传递信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM