【问题标题】:Send invoice email automatically in asp.net在 asp.net 中自动发送发票电子邮件
【发布时间】:2017-08-29 20:51:47
【问题描述】:

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

我可以使用任务调度程序或 Windows 服务吗?

【问题讨论】:

    标签: c# asp.net email


    【解决方案1】:

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

    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 分钟调用一次您的 URL:http://your_website/CronMail.aspx

    这里是一个例子:https://superuser.com/questions/447368/set-windows-scheduler-to-schedule-open-a-website-webpage-or-the-bookmark(使用 chrome 而不是 iexplorer)

    【讨论】:

      【解决方案2】:

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

      我已经取得了很多成功。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-06
        • 1970-01-01
        • 2016-07-07
        • 2019-07-14
        • 2013-07-22
        • 1970-01-01
        • 2011-10-22
        • 2013-08-22
        相关资源
        最近更新 更多