C# 自动发送电子邮件

C# 自动发送电子邮件,c#,asp.net-mvc,database,email,razor,C#,Asp.net Mvc,Database,Email,Razor,我正在开发一个MVC.Net web应用程序。我有一个数据库,其中有一个名为Tasks的表,每个任务都与一个用户关联,每个任务都有一个延迟。我想在任务到期日后两天(例如)前自动向任务关联的用户发送电子邮件。您可以编写Windows服务应用程序或控制台应用程序,使用Windows计划程序定期运行(例如一天一次),它将查询您的数据库,提取符合所需条件的记录,是的 我之所以这么说是因为这个任务不应该由web应用程序完成。它应该由单独的应用程序执行。在web应用程序中,重复执行的后台任务(如需要执行的任

我正在开发一个MVC.Net web应用程序。我有一个数据库,其中有一个名为Tasks的表,每个任务都与一个用户关联,每个任务都有一个延迟。我想在任务到期日后两天(例如)前自动向任务关联的用户发送电子邮件。

您可以编写Windows服务应用程序或控制台应用程序,使用Windows计划程序定期运行(例如一天一次),它将查询您的数据库,提取符合所需条件的记录,是的


我之所以这么说是因为这个任务不应该由web应用程序完成。它应该由单独的应用程序执行。在web应用程序中,重复执行的后台任务(如需要执行的任务)是不允许的。Haacked讨论了为什么这是一个非常糟糕的主意:

您可以使用Windows服务自动发送电子邮件

请参考下面的链接


您可以使用您的逻辑将计时器设置为2天。

小模型示例:

DateTime today = DateTime.Now;
TimeSpan diff = user.Tasks.ExpirationDate.Subtract(today);
int dateDiff = Convert.ToInt32(diff.TotalDays);

if (dateDiff == 2)
{
     //Send Email
}
然后,您可以将其放置在mvc应用程序的
服务/Email
文件夹中,并创建一个单独的控制台应用程序来每天请求该页面,从而运行查询,例如:

 HttpWebRequest req = (HttpWebRequest)WebRequest.Create("YOUR PAGE");
        string response = new System.IO.StreamReader(req.GetResponse()
            .GetResponseStream()).ReadToEnd();
您将使用Windows任务计划程序每天运行控制台应用程序,这将启动控制台应用程序>控制台应用程序请求页面>页面检查任务的过期日期>发送电子邮件