3

对于我客户的定制 CRM,我希望通过电子邮件通知用户(技术人员)标记案例的更改。

这保证了用户和案例之间的简单订阅映射表以及每次从日志记录方法中对案例进行更改时发送的自动电子邮件。

如何向订阅用户发送 10 到 100 封电子邮件,而不会使我的日志记录方法陷入困境?我的 SMTP 服务器在我的 LAN 上的对等点上,因此发送应该很快,但理想情况下这应该由外部排队进程处理。

我可以让一个 cron 作业每 10 分钟发送一次任何未完成的电子邮件,但是对于这种特定的客户案例来说,时间非常敏感,并且即时通知(尽可能即时)会很棒。

如何从 ASP.NET MVC 中发送批量通知电子邮件,而不会使我的日志记录方法陷入困境?

4

2 回答 2

4

早在 2007 年,我就被要求调查 Web 服务器突然冻结并开始发送 503 错误并在几分钟后返回的案例。长话短说,最后发现它正在发送阻止服务器的电子邮件(除了一些错误的代码)。

基本上微软的 SMTP 服务器是作为单线程服务实现的——我上次检查过。这意味着您所有有价值的 ASP.NET 线程服务请求将不得不排队到单线程单体应用程序发送不那么紧急的电子邮件。您需要将您的网站与发送电子邮件分离——这是每个人都在做的事情,并且有充分的理由这样做。

将您的电子邮件写入队列,并有一个阅读和发送电子邮件的过程。

于 2011-01-14T10:50:34.820 回答
2

从 ASP.NET 应用程序发送电子邮件不是一个好主意,因为它可能会垄断宝贵的服务器资源。更好的解决方案是设置一个 Windows 服务来执行此任务,或者甚至编写一个控制台应用程序,该应用程序可以安排为使用 Windows 调度程序运行。Quartz.NET是一个很好的解决方案,你可以看看它允许你安排作业。

如果您希望从特定控制器操作中触发这些电子邮件发送,您还可以拥有一个可以异步调用的单独 WCF 服务。

于 2011-01-14T10:47:25.407 回答