c# - 使用 mvcmailer 发送多封电子邮件

标签 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;
}

谁能解释一下? 谢谢

最佳答案

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

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

关于c# - 使用 mvcmailer 发送多封电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5881747/

相关文章:

c# - 从两个列表c#中获取匹配项的最快方法

c# - WPF 中的 ItemsSource 以编程方式声明为 C#

asp.net-mvc - MVCContrib 网格 - 对自定义列进行排序

email - 如何从本地 asp.net 4.0 Web 应用程序发送启用图像的电子邮件

email - 发送包含许多大附件的电子邮件时,Gmail API 推送通知过多

html - HTML 电子邮件中包装表之间的水平间距 - 尝试了各种修复

c# - 将项目加入单个列表<>

c# - 如何声明内联谓词委托(delegate)?

c# - 实现涉及多个程序集的自定义 Controller 工厂

asp.net-mvc - 我可以共享相同的 View 以在 MVC3 中创建和编辑吗