4

我希望使用MVCMailer使用带有剃须刀的 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;
}

有人可以解释吗?谢谢

4

2 回答 2

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 服务器因任何原因关闭或无法访问,您也会获得一些冗余。

于 2011-05-04T17:22:55.123 回答
1

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

mailMessage.To.Add("sohan39@example.com");
mailMessage.To.Add("peter23@example.com");
于 2011-05-04T12:14:41.460 回答