2011-01-14 81 views
2

对于我的客户定制的CRM,我希望用户(技师)被通知通过电子邮件更改标记的情况下。发送大量电子邮件通知无阻塞

这是值得用户和箱子和自动电子邮件之间的简单的订阅映射表的每一个改变从所述记录方法中的情况进行了说明的时间进行发送。

如何发送电子邮件10-100给订阅用户无需陷入泥淖我的测井方法?我的SMTP服务器位于局域网上的对等设备上,因此发送应该很快,但理想情况下应该由外部排队进程处理。

我可以有一个cron作业发送任何未发送电子邮件,每10分钟,但对于这个特定的客户情况都相当时间敏感和即时通知(如即时电子邮件即可)将是巨大的。

我怎么能发送大量的电子邮件通知从ASP.NET MVC中不陷入泥淖我的测井方法?

回答

2

从ASP.NET应用程序发送的邮件是不是一个好主意,因为它可能会独占宝贵的服务器资源。一个更好的解决方案是设置一个Windows服务来执行这个任务,甚至可以编写一个控制台应用程序,这个应用程序可以安排在Windows Scheduler上运行。 Quartz.NET是一个很好的解决方案,您可以查看一下允许您安排工作。

如果你想这些电子邮件发送给从特定的控制器动作中触发,你也可以拥有它可以异步调用单独的WCF服务。

+0

MSMQ怎么样? – 2011-01-14 12:24:09

3

早在2007年我被要求寻找到其中的Web服务器会突然冻结并开始发送503错误,几分钟后回来的情况。长话短说,最后它发送的是阻止服务器的电子邮件(除了一些不好的代码之外)。

基本上微软的SMTP服务器是作为单线程服务实现的 - 最后我检查了。这将意味着所有服务请求的有价值的ASP.NET线程将不得不排队等待单个线程单片应用程序发送不太紧急的电子邮件。您需要将您的网站与发送电子邮件分开 - 这是每个人都可以做的,并且有充分的理由。

写你的电子邮件到队列有一个过程,阅读和发送电子邮件。