2017-03-27 22 views
0

發送電子郵件如何自動上午11點,每天使用ASP.NET,C#,Web表單發送電子郵件?如何自動以特定的時間每天

我按鈕點擊做發送郵件。我的要求是每天早上11點,郵件應該自動發送。這可能使用C#代碼嗎?

protected void SendEmail(object sender, EventArgs e) 
{ 
    using (StringWriter sw = new StringWriter()) 
    { 
     using (HtmlTextWriter hw = new HtmlTextWriter(sw)) 
     { 
      gv_TotalAllReg.RenderControl(hw); 
      StringReader sr = new StringReader(sw.ToString()); 
      MailMessage mm = new MailMessage("[email protected]", "[email protected],[email protected]"); 

      mm.Subject = "Daily Report"; 

      mm.Body = "Dear Customer, <br><br>Applications received as on: " + ViewState["date"] + ".<hr />" + sw.ToString() + "<br/>Thanks,<br>Support Team."; 

      mm.IsBodyHtml = true; 
      mm.CC.Add("[email protected]"); 

      SmtpClient smtp = new SmtpClient(); 
      smtp.Host = "smtp.gmail.com"; 
      smtp.EnableSsl = true; 

      System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential(); 
      NetworkCred.UserName = "[email protected]"; 
      NetworkCred.Password = "n0"; 
      smtp.UseDefaultCredentials = true; 
      smtp.Credentials = NetworkCred; 
      smtp.Port = 587; 

      smtp.Send(mm); 

      lbl_msg.Visible = true; 
     } 
    } 
} 

以下是我的按鈕代碼。

<asp:Button ID="btnSendEmail" runat="server" Text="Send email" OnClick="SendEmail" class="btn btn-md btn-danger pull-right" /> 

當我點擊按鈕,然後gridview數據發送到電子郵件。但我想嘗試下面的概念。

If(time==11am) 
    { 
    //send mail 
    } 

我搜索很多,但得到Windows服務相關的例子,但我沒有得到這類型的概念。有沒有其他的方法。

回答

4

您必須使用作業調度程序庫。

使用hangfireQuartz.net

您將能夠安排工作的具體時間。

隨着遲髮型這將是這樣的:

BackgroundJob.Schedule(
    () => SendMail(), 
    new DateTime(2017, 27, 03, 11, 00, 00)); 
+0

我使用asp.net web表單應用程序的工作。是否有任何示例代碼可以快速實現? @Ygalbel –

+3

@ mazhar124如果你想快點,我建議你聘請一些有經驗的開發人員爲你做?!? –

+0

我只是開發者,但新的請幫忙。 @UweKeim –

2

Web窗體應用程序是有幾個原因的計劃任務錯了地方。首先,Web表單基於http的請求 - 響應範例。這意味着服務器代碼由http請求觸發,例如,當用戶瀏覽頁面或點擊按鈕時。從理論上講,你可以實現一個無限循環來檢查條件(即利用睡眠甚至定時器),然後發送由SendMail執行的消息。但是,這是一個壞主意,因爲您的webforms應用程序運行的IIS應用程序池可能會被回收。

作爲替代方案,你可以

  • 創建一個執行郵件發送任務控制檯應用程序和使用Windows任務調度執行它,或
  • 創建執行發送郵件任務窗口服務,或
  • 使用任何其他任務調度實用程序來執行控制檯應用程序或調用Web服務。
+0

如果提供一些代碼將幫助完整。 @Gaste –

+0

@ mazhar124對於第一種將發送郵件代碼放在控制檯應用程序的Main方法中的方法,並使用[Task Scheduler](https://technet.microsoft.com/en-us)執行它/library/cc748993(v=ws.11).aspx)。有[教程](https://www.aspsnippets.com/Articles/Tutorial-to-create-a-simple-Windows-Service-with-sample-example-in-C-and-VBNet.aspx)關於如何用時間創建一個windows服務。在@Ygalbel的回答中描述了使用任務scheulding庫的第三個選項。 – Gaste

+0

我正在發送gridview數據的郵件,並且gridview不能在控制檯中工作。 @Gaste –

相關問題