在asp.net中发送批量电子邮件的最佳方式

Con*_* G. 5 c# asp.net email smtp bulk

我有一个网站,我需要向注册会员发送个性化电子邮件.这不是广告程序(垃圾邮件),而是不时告知他们的状态.必须批量发送的电子邮件数量最多为3000个.该网站托管在Windows 2008 Server(VPS)上,我在IIS7上安装了SMTP.

在花了一些时间阅读如何实现通过asp.net发送大量电子邮件的机制后,我感到有点困惑.


从我读到的我可以:

  • 在循环中同步或异步(新线程)发送它们
  • 准备并将它们放在皮卡目录中
  • 创建一个检查现有队列的Windows服务
  • 从sql server 2008发送它们(我已快递).

你能建议最好的方式吗?

关于黑名单我的服务器有问题吗?

有没有更好的方法,这里没有提到实现这个?

提前致谢.

Joh*_*ell 6

关于你的服务器被列入黑名单,你一次发送多少"你发送给他们的人"并不重要.如果您将它们发送给不想要它们的用户,并且他们将您报告为垃圾邮件发送者,那么您无疑会被众多DNS黑名单网站中的一个列入黑名单.

始终确保人们首先选择使用双重选择系统,您发送电子邮件,如果他们回复"激活帐户",那么您可以向他们发送更多电子邮件,如果他们不认为他们输入了错误的地址.

就最佳处理方式而言,我总是发现最好的方法是编写一个与网站分开运行的小型服务.您真的不想使用与IIS服务相同的线程发送电子邮件.

如果你真的想要完全成熟的专业方式.您可能希望实现某种形式的消息队列系统(如ActiveMQ或RabbitMQ),您可以在其中发送消息,并将它们放入队列中,然后您将创建一个Windows进程来侦听其中一个队列,并在电子邮件发出时发送出去.这样,如果您的邮件处理器死机或运行缓慢等等,您可以调出更多处理器,将其连接到同一队列,更多进程共享作业(简单分发).

稍微不那么复杂的方法是使用FIFO队列,这可以很容易地在数据库中进行,只需将电子邮件保存到带有日期戳的表中,然后使用SELECT TOP 10*FROM OutgoingMail ORDER BY datestamp ASC发送它们(请记住并使用适当的索引)然后使用服务将它们分批发送出去.

如果可能的话,应该避免Asynch这样的事情,你不希望应用程序池在你的工作中途回收.