使用ASP.Net发送大量电子邮件

5

使用ASP.Net发送大量电子邮件的最佳方法是什么?

例如,网站管理员需要向该网站所有用户发送电子邮件(例如新闻通讯)。

在ASP.Net 3.5和C#中,最佳的方法是什么?

3个回答

9

根据Troy的评论进行编辑。

你应该使用外部进程来发送电子邮件。如果你的邮件列表增长到几百个,你很快就会遇到超时问题。一旦你进入那些包含千万条记录的列表,仅使用ASP.Net是没有可行解决方案的。

实际上,我开发了一个Windows服务来处理群发邮件。在ASP.Net中,我创建了一个活动和各种数据库记录的批处理作业,然后插入收件人列表。一旦作业完全写入数据库,它的状态就会改变,以便Windows服务知道它可以开始处理作业。然后ASP.Net站点可以随时查看记录,以确定服务已经完成了多少工作。


1
这条信息的关键在于有一个排队的过程和一个独立的发送过程。我已经在完全合法的情况下使用了相同的方法,并且在枚举大量收件人时防止可能的超时所提供的保险是非常宝贵的。 - Troy Hunt
+1 - 我采用了完全相同的方法。你必须具备良好的错误处理和恢复能力,才能使该过程更加健壮,但这是一个很好的策略。 - Brian Moeskau
我同意使用外部服务比自己编写代码要好得多。 - David
网络服务怎么样?对于这种情况是一个好方法吗? - Babak
Web服务仍然只是由Web服务器处理的网页,因此您将遇到相同的问题。它们可能对于将某些功能抽象出来以供其他项目使用很有用,但最终,如果您希望其正常运行,则需要使用Windows服务。 - Spencer Ruport

2

如果我自己写这个程序,我会从数据库获取电子邮件地址,并使用System.Net.Mail.SmtpClient类进行循环。

但是,请确保您了解CAN-SPAM法案并遵循相关指南。


4
根据我的经验,这是一种非常糟糕的方法。 - Spencer Ruport
我之前测试过,但如果你想发送邮件给超过100个地址,就不要考虑它! - Babak
@Spencer 如果你要表达不同意见,至少提供一些细节说明你为什么不同意给出的答案。 - 3Dave

1

请看这个链接 >>>> 使用ASP.Net发送大量电子邮件 源代码是VB.Net,但由于MFCL相同,您可以轻松地将代码更改为CSharp。然而,aspx部分仍然保持不变。


1
使用BCC是一个不错的方法,但如果您想向超过1000个地址发送电子邮件,我认为这不是一个好主意。 - Babak
我要投赞成票,因为从性能的角度来看,这可能比发送单独的电子邮件更好。此外,使用@BabakArj的评论,很容易使用循环来构建bcc列表到一定数量的条目,然后发送并继续进行其余部分。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接