如何从 ASP.NET 发送大量电子邮件?

2023-11-26

我为客户建立了一个网站,他们想要一个定制的新闻通讯工具。构建该工具很容易,但我不确定如何发送电子邮件。

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

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

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

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

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


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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 ASP.NET 发送大量电子邮件? 的相关文章