我希望使用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;
}
有人可以解释一下吗?
感谢
答案 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");