【问题标题】:Best practise to send mass email within application (ASP.NET MVC 2, C#)?在应用程序中发送大量电子邮件的最佳实践(ASP.NET MVC 2、C#)?
【发布时间】:2011-02-21 10:13:31
【问题描述】:

在网络应用程序中实现群发电子邮件功能的最佳方式是什么?两大案例:

  1. 根据不同的注册用户的活动向他们发送电子邮件(只是向用户发送关于他创建的主题中的新帖子的简短提醒)

  2. “为所有注册用户发送电子邮件”功能,如果系统管理员能够为所有注册用户发送一些消息,那就太好了。当然,将所有电子邮件添加到收件人不是我们可以采用的方式,因为每个用户的电子邮件地址都是匿名的。

据我所知,案例 nr1 没有问题,只需通过 System.Net.Mail 创建一些电子邮件,方法是创建新邮件并发送它......但是案例 nr 2 呢???

我猜是这样的:

foreach(var emailAddress in emailAddresses) { 

MailMessage mail = new MailMessage();

mail.From = new MailAddress("jondoe@bla.net");

mail.To.Add(emailAddress);

mail.Subject = "test";

mail.Body = "test";

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);

smtp.Send(mail); 
}

不是好方法:)所以问题是实现这一目标的最佳方法是什么?

顺便说一句,我们无法为电子邮件发送部署一些服务,这应该集成到 Web 应用程序中。

【问题讨论】:

  • 循环有什么问题?这对我来说似乎是最好的选择。您每人发送 1 封电子邮件,保护每个人的匿名性。

标签: c# asp.net email massmail


【解决方案1】:

如果你想在情况 2 中隐藏收件人,为什么不能将收件人放入 MailMessage 的密件抄送中?

我推荐的一件事是在您的 web.config 中定义您的电子邮件设置,如下所示:

<configuration>
  <!-- Add the email settings to the <system.net> element -->
  <system.net>
    <mailSettings>
      <smtp>
        <network 
             host="relayServerHostname" 
             port="portNumber"
             userName="username"
             password="password" />
      </smtp>
    </mailSettings>
  </system.net>

  <system.web>
    ...
  </system.web>
</configuration>

【讨论】:

    【解决方案2】:

    另一件事:不要使用 gmail。首先,gmail 有限制——无论如何,不​​要使用外部服务器。

    我做类似的事情,我使用硬盘上的一个放置目录,然后使用 MTA(Windows 中的 SMTP 服务)进行实际传输。

    这样我可以快速完成(只是生成文件),而实际的电子邮件可能需要更长的时间。

    【讨论】:

      【解决方案3】:

      如果您在“emailAddresses”实例中收到过多的电子邮件,您将面临超时问题。 您可能会考虑使用小型 Windows 服务应用程序来处理发送功能。它对我有用。

      【讨论】:

        猜你喜欢
        • 2011-08-20
        • 2012-09-24
        • 2011-12-11
        • 2019-06-26
        • 2011-02-16
        • 2016-02-09
        • 1970-01-01
        • 2010-09-08
        • 1970-01-01
        相关资源
        最近更新 更多