在asp.net

时间:2017-08-29 20:51:47

标签: c# asp.net email

现在我们的asp.net网站手动发送发票,是否可以每5分钟自动向客户发送电子邮件?所有发票都使用软件放入SQL Server数据库,放入数据库后,需要发送到附带PDF文件的不同客户邮箱地址。这意味着代码需要每5分钟从数据库中收集新的发票信息并发送。然后创建一个日志文件,包括发送到会计的成功和不成功的发票。

我可以使用任务计划程序或Windows服务吗?

2 个答案:

答案 0 :(得分:0)

创建一个名为CronMail.aspx的页面并在load事件中发送电子邮件(我使用一些伪代码解释了这个想法):

void Page_Load(object source, EventArgs e)
{
     //1. Check that more than 5 minutes happened before last sent
     DateTime lastSent = ...;
     if (DateTime.Now().Substract(lastSent).Minutes < 5)
          return;

     //2. Get your invoices and PDF files
     var dataToSent = ...;

     //3. Send your invoices
     foreach(var item in dataToSent) 
     {
          //4. Save sent date every time to avoid resending in case the whole operation takes more than 5 minutes 
          saveSentTime();

         //5. Finally send your data
     }
}

然后,您可以使用Windows任务计划程序每5分钟调用一次网址:http://your_website/CronMail.aspx

以下是一个示例:https://superuser.com/questions/447368/set-windows-scheduler-to-schedule-open-a-website-webpage-or-the-bookmark(使用chrome代替iexplorer)

答案 1 :(得分:0)

Hangfire库是一个完整的后端作业调度程序和后台处理程序,它运行在最新版本的ASP.NET之上。它独立运行(需要一个特殊的IIS应用程序池配置 - “AlwaysRunning”),而不需要外部网页ping或任务调度程序。您可以安排许多作业每分钟运行一次。

我用它取得了很多成功。