2012-07-27 151 views
1

我工作的MVC .NET Web應用程序。我有一個數據庫,其中有一個名爲Tasks的表,每個任務都與一個用戶關聯,每個任務都有一個延遲。我想自動發送電子郵件向誰任務之前,其截止日期初二(例如)相關聯的用戶。發送電子郵件自動

回答

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

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 Task Scheduler天天跑的控制檯應用程序,這將啓動控制檯應用程序>控制檯應用程序請求頁>頁檢查到期日期的任務>發送電子郵件