我正在开发一个MVC .Net Web 应用程序。我有一个数据库,其中有一个名为 Tasks 的表,每个任务都与一个用户相关联,每个任务都有延迟。我想在任务到期后两天(例如)之前自动向与任务关联的用户发送电子邮件。
问问题
16220 次
3 回答
1
您可以编写一个 Windows 服务应用程序或一个控制台应用程序,它们将使用 Windows 调度程序定期运行(例如每天一次),它将查询您的数据库,提取与所需条件匹配的记录,是的,SmtpClient .
我这么说的原因是因为这个任务不应该由你的 Web 应用程序来完成。它应该由单独的应用程序执行。重复的后台任务(例如您需要执行的任务)在 Web 应用程序中是不允许的。Haacked 讨论了为什么这是一个非常糟糕的主意:http ://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx
于 2012-07-27T08:22:51.697 回答
1
您可以使用 Windows 服务自动发送电子邮件。
请参考以下链接
您可以使用您的逻辑将计时器设置为 2 天。
于 2012-07-27T08:25:05.937 回答
0
小模型示例:
DateTime today = DateTime.Now;
TimeSpan diff = user.Tasks.ExpirationDate.Subtract(today);
int dateDiff = Convert.ToInt32(diff.TotalDays);
if (dateDiff == 2)
{
//Send Email
}
然后,您可以将其放在Services/Email
mvc 应用程序的文件夹中,并创建一个单独的控制台应用程序来每天请求页面,因此运行查询,例如:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("YOUR PAGE");
string response = new System.IO.StreamReader(req.GetResponse()
.GetResponseStream()).ReadToEnd();
您将使用 Windows 任务计划程序每天运行控制台应用程序,这将启动控制台应用程序 > 控制台应用程序请求页面 > 页面检查任务的到期日期 > 发送电子邮件
于 2012-07-27T08:37:11.367 回答