处理来自asp.net网站的大量电子邮件

时间:2010-09-29 15:14:34

标签: asp.net email

我正在开发的网站每天会发送数以万计的电子邮件(这个数字会越来越多) - 注册,通知,提醒等。我将有一个专用的服务器盒,实际上会生成和发送电子邮件根据asp.net应用程序的请求(asp.net app在电子邮箱上调用WCF方法并为电子邮件提供各种参数)。 现在,我想弄清楚在电子邮件服务器上排队这些电子邮件作业的最佳方法是什么。来自asp.net应用程序的调用必须是异步的,以便asp.net应用程序不会等待电子邮件服务器创建和发送实际的电子邮件。 最初我只是为每个电子邮件作业请求创建一个工作线程,但电子邮件的数量将非常高,我不确定是否创建数百个同步线程是一个好主意。我的下一个想法是使用MSMQ,但我不确定它的性能和可扩展性。

任何想法/制作示例?

谢谢!

1 个答案:

答案 0 :(得分:0)

在之前的工作中,我们不得不将邮件排队等待交付,就像您在解释一样。我们决定创建一个代表每条消息的数据库记录。在消息创建时,我们在.NET中创建了邮件消息,然后将其保存到数据库中。一个单独的进程(.NET内置的Windows服务)会定期检查是否有要发送的消息(交付日期是过去的,状态是未发送的)。然后,它将根据从存储过程收到的信息重新创建邮件消息,并以快乐的方式发送消息。

返回准备发送的消息的过程还根据呼叫的日期和时间执行了限制逻辑(我们允许在晚上和周末使用更多的带宽而不是白天)。

我们还需要跟踪回弹,消息打开和点击,这意味着拥有代表电子邮件的数据库记录是必要的,因此我们可以将事件(退回,打开,点击)与各个电子邮件和收件人联系起来。