如何在每天的特定时间自动发送电子邮件

时间:2017-03-27 11:53:09

标签: c# asp.net email

如何使用ASP.NET,C#,Webforms每天上午11点自动发送电子邮件?

我按下按钮点击发送邮件。我的要求是每天上午11点,邮件应该自动发送。这可能是使用C#代码吗?

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

下面是我的按钮代码。

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

当我按下按钮时,gridview数据将发送到电子邮件。但我正在尝试下面的概念。

symbolic

我搜索了很多,但获得了Windows服务相关的示例,但我没有得到那种类型的概念。还有其他方法。

2 个答案:

答案 0 :(得分:4)

您必须使用作业调度程序库。

使用hangfireQuartz.net

您可以在特定时间安排工作。

使用hangfire会是这样的:

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

答案 1 :(得分:2)

由于多种原因,Web表单应用程序是计划任务的错误位置。首先,Web表单基于http的请求 - 响应范例。这意味着服务器代码由http请求触发,例如当用户浏览页面或点击按钮时。从理论上讲,您可以实现一个无限循环来检查条件(即利用睡眠或甚至是计时器),然后发送由SendMail执行的消息。但是,这是一个坏主意,因为运行webforms应用程序的IIS应用程序池可能会被回收。

作为替代方案,您可以

  • 创建一个执行邮件发送任务的控制台应用程序,并使用Windows任务计划程序或
  • 执行它
  • 创建执行发送邮件任务的Windows服务,或
  • 使用任何其他任务计划实用程序来执行控制台应用程序或调用Web服务。