【问题标题】:How do you send mass emails from ASP.NET?如何从 ASP.NET 发送大量电子邮件?
【发布时间】:2011-08-19 15:31:27
【问题描述】:

我为客户建立了一个网站,他们想要一个定制的时事通讯工具。构建工具很简单,但我不知道如何发送电子邮件。

我设置了一个测试页面,并设法使用 System.Net.Mail 命名空间向自己发送了一封测试电子邮件。我尝试将此代码应用到时事通讯页面上的循环中,但结果证明这是一项相当艰巨的任务。电子邮件发送循环在发送电子邮件时将整个站点锁定了大约一个小时。有时它会中途中止循环,并且某些电子邮件不会被发送。

我尝试在另一个线程上启动循环。

protected void btnSendNewsletter_Click(object sender, EventArgs e)
{
    Thread t = new System.Threading.Thread(new ThreadStart(SendEmails));
    t.Start();
}

但这仍然会使网站运行缓慢,并且还有中途中止的习惯。群发邮件的常用方法是什么?我确定我做得不对。

我对 .NET 中的电子邮件领域非常陌生。

【问题讨论】:

  • 使用服务,而不是 asp.net 页面来发送电子邮件
  • 你用的是什么邮件服务器?
  • @Caspar,@Joe 我正在使用Arvixe 托管和他们的电子邮件托管。是否可以在共享托管环境中创建服务,还是需要我购买自己的服务器?

标签: c# .net asp.net multithreading email


【解决方案1】:

对于此类任务,您最好将一堆作业添加到队列中。然后运行一个线程,从队列中拉出 x 个作业,处理它们(即发送电子邮件),然后休眠一段时间。这将为您的网络应用提供一些喘息的空间。

如果您使用数据库,您可以创建一个电子邮件队列表来存储作业。我更喜欢使用这种存储而不是内存,以防应用因某种原因回收或引发异常......至少你可以从你离开的地方继续。

通常,运行工作线程的进程不会是 Web 应用程序本身。这将是一个 Windows 服务或类似的东西。如果您使用的是共享主机,这可能是不可能的。

【讨论】:

  • 内容丰富且简洁。谢谢你。您是否知道可以注册任何第三方 API 以将负载转储到他们身上并让他们发送电子邮件?
  • 同意。虽然 Chevex 无法创建服务(共享主机),但您指定的此方法仍可在主系统中使用。
  • 我认为最便宜的选择是让第 3 方处理电子邮件负载。我似乎无法找到一个好的群发电子邮件 API。有没有大多数人使用的流行的?
  • @Chevex 在上面链接的问题的答案中推荐了一些第三方提供商:stackoverflow.com/q/3905734/310112
  • 过去我使用过 MailChimp mailchimp.com,但这涉及到我的应用程序从 CMS 创建电子邮件模板,使用令牌作为姓名和称呼等。然后将单个令牌化模板传递给 MailChimp。然后,MailChimp 将通过用正确的数据替换所有令牌并发送它们来从您的用户数据库中创建所有电子邮件。您可以使用邮件黑猩猩托管您的用户列表,或者我认为他们可能会提供一个 API 以通过某种代理访问您的远程数据库
猜你喜欢
  • 1970-01-01
  • 2011-02-04
  • 2012-06-23
  • 2012-09-24
  • 1970-01-01
  • 2012-03-26
  • 1970-01-01
  • 2012-12-11
  • 2016-09-15
相关资源
最近更新 更多