5

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

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


从我读到的我可以:

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

你能建议最好的方法吗?

我是否有关于将我的服务器列入黑名单的问题?

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

提前致谢。

4

1 回答 1

6

关于您的服务器被列入黑名单,您“一次”发送多少并不重要,更重要的是“您将它们发送给谁”。如果您将它们发送给不想要它们的用户,并且他们将您报告为垃圾邮件发送者,那么您无疑会被周围众多 DNS 黑名单站点之一列入黑名单。

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

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

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

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

如果可能的话,应该从 IIS 中避免异步,因为您不希望应用程序池在您的工作中途回收。

于 2012-06-13T19:05:37.847 回答