【发布时间】:2011-10-27 00:54:30
【问题描述】:
我没有使用事件调度程序,只是 asp.net mvc,需要在事件发生前 4 天发送提醒。我有事件(Event_Start)的存储日期,你能帮忙吗?
我在控制器 public void Reminder() 中创建了一个类,但现在卡住了
【问题讨论】:
标签: asp.net-mvc email
我没有使用事件调度程序,只是 asp.net mvc,需要在事件发生前 4 天发送提醒。我有事件(Event_Start)的存储日期,你能帮忙吗?
我在控制器 public void Reminder() 中创建了一个类,但现在卡住了
【问题讨论】:
标签: asp.net-mvc email
您的 Reminder() 方法将根据您从数据库中检索到的项目为那些休假 4 天的事件发送电子邮件。您可以使用 System.Net.Mail.SmtpClient 类来实际发送电子邮件。
更大的挑战是如何触发每天执行一次的路径。其他担心是,如果您不注意 web.config 中允许的请求时间,实际发送可能需要一段时间并且可能会超时。
对于这些类型的活动,只需创建一个控制台应用程序并通过服务器上的每日 Windows 计划任务触发它会更容易。
这是之前关于在 MVC 上做的问题的讨论:Send Email in Background。
【讨论】:
您最好使用调度程序服务在确定的时间调用/访问“提醒”页面。例如http://mysite/Reminder/SendEmails/EventId。您可以在控制器内处理电子邮件发送。
【讨论】:
您可能会创建一个页面来确定需要发送的内容并使用 System.Net.Mail 发送。然后创建一个简单的批处理文件,定期访问该页面(可以通过 Windows 计划作业处理计划)。
如果您坚决反对创建可以作为服务运行或作为计划作业运行的东西,那么另一种选择是将缓存过期用作作业计划程序。一段时间以来,人们一直在使用 ASP.NET 进行此操作。这篇文章很旧,但它应该仍然可以正常工作:
【讨论】:
您可以使用http://quartznet.sourceforge.net/ 进行触发事件检查功能。这很简单,不需要 Windows 计划任务来完成这项工作。
【讨论】: