2010-05-20 73 views
2

我有C#web應用程序,希望它在特定日期發送電子郵件,例如設備未在到期日返回。數據在MS SQL數據庫中。在特定日期觸發電子郵件

我已經完成了所有的電子郵件代碼,我只是好奇我該如何觸發這封電子郵件,在COB之後的那一天呢?

感謝,

埃裏克

回答

2

創建一個作爲計劃任務運行的小控制檯應用程序。

它會做類似如下:

  1. 檢查未發送的電子郵件的電子郵件數據庫
  2. 檢查每一個未發送的電子郵件,它的發送日期
  3. if發送日期等於DateTime.Now然後發送電子郵件
  4. 標記爲發送的電子郵件
  5. 重複foreach電子郵件
  6. 申請退出的,然後再次運行根據計劃任務的設置

更新

你提到你想用一個觸發器來做到這一點..以及我從來沒有這麼做過,但有看着它。我使用控制檯應用程序方法。我更喜歡這個。但是here是我在觸發方法上找到的一個鏈接。

+0

服務器上可能存在服務策略和/或獨立應用程序。 我不知道我是否使用MS SQL觸發郵件。我知道它有能力。 – Risho 2010-05-20 17:42:11

+0

@Risho,Ive之前對它進行了調查,我使用了應用程序方法。當我看着它的時候,我把鏈接指向了我正在閱讀的觸發器。看看我更新的答案。 – Gabe 2010-05-20 18:17:22

2

你作出這樣的查詢該應今天發出的所有郵件數據庫,併發送電子郵件的應用程序。然後,您可以安排該應用程序每天使用任務計劃程序運行。

0

沒有一些資料片的,你可以觀察數據庫的改變,你會最終有一個計劃任務,服務,或DB工作這樣做。

因爲SQL服務器有能力發送電子郵件,所以我甚至不打擾使用C#。只需在SQL服務器中設置一個作業,該作業每天在創建未發送郵件的遊標之後運行,並使用SQL Server中的原生功能發送它們。

+0

我在想創建一個登錄觸發器,因爲我在連接字符串中使用特定的用戶登錄名,所以它會記錄在dm_exec_sessions表中。 但是,該網站現在與以下內容分離: 「由於觸發器執行導致登錄失敗,登錄'dev'。將數據庫上下文更改爲'mydatabase'。將語言設置更改爲us_english。「 – Risho 2010-05-20 19:56:33