2017-03-27 26 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 –

相关问题