如何发送延迟邮件?

时间:2012-11-12 06:03:48

标签: c# asp.net-mvc-3 email

我有ASP.NET MVC应用程序,我需要在用户离开页面后以“X”分钟(每个用户时间不同)发送电子邮件。 我该怎么办?

2 个答案:

答案 0 :(得分:3)

Http是无状态的,并且发送了页面执行的时间响应。你需要一个application that will be sending mail even website is not accessed by some body for a significant time interval。您可以在数据库中放置一段时间后需要发送的邮件。另一个应用程序可能是一个Windows服务,它将在固定的时间间隔(例如30秒)之后汇集数据库并发送已达到发送时间的邮件。

答案 1 :(得分:1)

我选择的解决方案取决于您正在构建的系统所需的规模和可靠性。

如果它是一个低规模(即同时没有太多用户的1台服务器),非关键任务系统(即,如果实际上没有发送某些电子邮件,例如,如果您的服务器崩溃,则可以。 ),然后解决方案可以像管理内存中的队列一样简单,该线程会定期唤醒以向最近离开页面的用户发送电子邮件。

如果您需要构建非常可靠并且可能需要在短时间内发送大量电子邮件的内容,并且如果您的系统必须扩展到许多计算机,那么您可能希望构建一个基于某个存储中的队列的解决方案,其中根据需要的多个机器将选择项目并处理它们。如果您需要非常高的规模和可靠性,诸如Windows Azure队列服务之类的API可以很好地适应这种情况。