2017-08-29 5 views
0

現在、私たちのasp.netウェブサイトは手動で請求書を送付しています。すべての請求書はソフトウェアを使用してSQL Serverデータベースに格納され、データベースに格納された後、添付されたPDFファイルを使用して別の顧客の電子メールアドレスに送信する必要があります。つまり、コードは5分ごとにデータベースから新しい請求書情報を収集して送信する必要があります。その後、会計に送信された請求書の成功と失敗を含むログファイルを作成します。asp.netで請求書メールを自動的に送信

タスクスケジューラまたはWindowsサービスを使用できますか?

+3

請求書をデータベースに挿入した直後に、そのコードで請求書を生成して送信できますか? 5分ごとにポーリングするよりも簡単です。 –

+0

ありがとうエレメンタル。しかし、データがデータベースに挿入されていることをどのように知ることができますか?私はデータベースに触れることはできません、それを使用することができます。請求書はウェブサイトからの挿入ではありません。それはソフトウェアによる挿入です。 @Elemental Pete – Iris

+0

私は、あなたは1つのemailsend.aspxページを作成してから、Webサーバーのcronジョブ機能を使って設定することをお勧めします。 –

答えて

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 
    } 
} 

次に、あなたは、すべての5あなたのURLを呼び出すために、Windowsのタスクスケジューラを使用することができます分:ここhttp://your_website/CronMail.aspx

は一例です:https://superuser.com/questions/447368/set-windows-scheduler-to-schedule-open-a-website-webpage-or-the-bookmark(代わりにIEXPLORERの使用クローム)

+0

あなたのソリューションは素敵ですね、私は試してみます。ありがとうございます。 – Iris

0

Hangfireライブラリが上で動作する完全なバックエンドのジョブスケジューラと背景プロセッサですより最近のバージョンのASP.NET外部Webページのpingやタスクスケジューラを必要とせずに、独自のIISアプリケーションプール設定(「AlwaysRunning」が必要)が実行されます。多くのジョブを1分に1回実行するようにスケジュールできます。

私はそれに多くの成功を収めています。

関連する問題