2017-08-29 60 views
0

現在我們的asp.net網站手動發送發票,是否可以每5分鐘自動發送一次郵件給客戶?所有發票使用軟件放入SQL Server數據庫,放入數據庫後,需要將附件中的PDF文件發送到不同的客戶電子郵件地址。這意味着代碼需要每5分鐘從數據庫收集新的發票信息併發送。然後創建一個日誌文件,包括髮送到會計的成功和不成功的發票。在asp.net中自動發送發票郵件

我可以使用任務調度程序或Windows服務嗎?

+3

在代碼插入數據庫之後,您可以在代碼中生成併發送發票嗎?這比每5分鐘投票更容易一些。 –

+0

謝謝元素。但我怎麼知道數據被插入到數據庫?我無法觸摸數據庫,只能使用它。發票不是從網站插入的。它是由一個軟件插入。 @Elemental Pete – Iris

+0

我建議,你應該創建一個emailsend.aspx頁面,然後它應該配置與web服務器的cron作業設施 –

回答

0

創建一個名爲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分:http://your_website/CronMail.aspx

下面是一個例子:https://superuser.com/questions/447368/set-windows-scheduler-to-schedule-open-a-website-webpage-or-the-bookmark(使用鉻代替IEXPLORER)

+0

你的解決方案看起來不錯,我會嘗試。謝謝Isma。 – Iris

0

Hangfire庫是對之上運行一個完整的後端作業調度和背景處理器更新版本的ASP.NET。它獨立運行(需要特殊的IIS應用程序池配置 - 「AlwaysRunning」),而無需外部網頁ping或任務調度程序。您可以安排大量工作,每分鐘運行一次。

我已經取得了很多成功。