2

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

4

2 回答 2

3

Http 是无状态的,发送响应的时间页面执行完毕。即使某个机构在很长一段时间内没有访问网站,您也需要一个能够发送邮件的应用程序。您可以将需要在一段时间后发送的邮件放入数据库中。另一个应用程序可能是 Windows 服务,它将在固定时间间隔(例如 30 秒)后汇集数据库,并发送已达到发送时间的邮件。

于 2012-11-12T06:07:23.573 回答
1

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

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

如果您需要构建非常可靠的东西,并且可能需要在短时间内发送大量电子邮件,并且如果您的系统必须扩展到很多机器,那么您需要构建一个基于一些存储中的队列,根据需要将尽可能多的机器挑选并处理它们。如果您需要非常高的规模和可靠性,那么诸如 Windows Azure 队列服务之类的 API 可能非常适合。

于 2012-11-12T06:26:51.943 回答