使用mvcmailer发送多封电子邮件

时间:2011-05-04 10:08:59

标签: c# asp.net-mvc email razor mvcmailer

我希望使用MVCMailer使用带有razor的asp.net mvc 3发送电子邮件。 ScottHa

也提到了

它看起来相当直接,但我对如何将批量电子邮件(例如简报)发送到用户列表感到困惑。

我围绕这个创建一个循环吗?

public virtual MailMessage Welcome()
{
    var mailMessage = new MailMessage{Subject = "Welcome to MvcMailer"};

    mailMessage.To.Add("sohan39@example.com");
    ViewBag.Name = "Sohan";
    PopulateBody(mailMessage, viewName: "Welcome");

    return mailMessage;
}
有人可以解释一下吗? 感谢

2 个答案:

答案 0 :(得分:2)

不幸的是,因为每封电子邮件都是个性化的,除了循环之外,我看不到任何其他方式。所以只需将您的方法更改为:

public virtual MailMessage Welcome(string email, string name)
{
    var mailMessage = new MailMessage{Subject = "Welcome to MvcMailer"};

    mailMessage.To.Add(email);
    ViewBag.Name = name;
    PopulateBody(mailMessage, viewName: "Welcome");

    return mailMessage;
}

然后在循环中调用该方法并同时发送它。

重要提示

您应该将web.config设置为使用拾取目录而不是SMTP服务器。然后让IIS从拾取目录发送电子邮件。

推理 - 因为您可能会多次调用SmtpClient.Send(MailMessage mailmessage) - 如果您每次都必须连接到SMTP服务器以发送电子邮件,这可能会变得相当昂贵。

这样做的一个很好的副作用是,如果SMTP服务器因任何原因关闭或无法访问,您也会获得一些冗余。

答案 1 :(得分:1)

如果您希望每封电子邮件都有不同的内容,则需要使用循环创建单独的MailMessage个对象。如果您想要相同的内容,那么您只需添加多个收件人:

mailMessage.To.Add("sohan39@example.com");
mailMessage.To.Add("peter23@example.com");