2012-04-16 76 views
2

我使用SmtpClientMailMessage發送來自ASP.Net代碼的電子郵件。 我希望能夠延遲基於業務邏輯的電子郵件的傳遞。 我將能夠生成一個DateTime對象,以便實際發送電子郵件的時間。使用MailMessage和SmtpClient或MessageQueue延遲發送電子郵件

我知道我可以創建一個Windows服務來安排使用Sql Server數據庫作爲電子郵件存儲的電子郵件傳遞。但我不想在託管服務器上部署額外的服務。

我也知道,我可以創造一個SQL Server工作來實現這一點,但我不喜歡,直到除非,這不能用純ASP.NET

的一點要注意實現的是,我的代碼檢查服務器上是否啓用MSMQ。如果是,則MessageQueue類用於發送電子郵件。所以任何實現這個使用隊列的指針都會有幫助。

順便說一句,該解決方案應該在這兩種情況下工作(即SmtpClient以及MessageQueue

我已經檢討thisthis問題和接受的答案。我不希望使用第三方產品直到與使用純ASP.NET

PS .NET Framework版本,除非這是無法實現的:3.5,IIS 7和SQL Server 2008應該是環境

+0

您可以簡單地添加一些應用程序邏輯,以每X分鐘發送所有未決消息。您可以在Application_Start事件中掛接一個計時器。只要確保你的asp.net應用程序沒有關閉,如果沒有X分鐘的訪問者。 – CodingBarfield 2012-04-16 06:47:00

+0

@CodingBarfield:如果你能展示一些示例代碼,那將會很棒。我懷疑,如果沒有X分鐘的訪問者,「確保asp.net應用程序沒有關閉」的努力很高。那麼你可以寫一個答案來顯示你的實施方法,以便我驗證嗎? – AYK 2012-04-16 07:03:28

+0

@AYKSorry我沒有用過asp。最近網絡足以提供有保證的工作解決方案。這可能是一個微不足道的IIS切換或難以做到的事情,但我無法給予任何保證。 – CodingBarfield 2012-04-16 08:16:18

回答

0

經過客戶端的一些研究和澄清之後,決定創建一個長時間運行的後臺線程,該線程將處理每次定義的時間發送電子郵件,並且無需擔心應用程序池是否由於閒置。

1

大約保持在asp.ne運行定時器一些信息t包括總是場景大約一個很大的評論:

Start timer on web application start

您可以使用以下,以保持asp.net從關閉:

Can you prevent your ASP.NET application from shutting down?


您可以簡單地使用定時器來檢查數據庫併發送所有未決郵件。

請哪些asp.net版本和IIS託管版本,您正在使用
由於很多可能的問題取決於這些版本中添加更多的信息。

+1

更新我的問題以包含版本。 – AYK 2012-04-16 08:33:03

+0

謝謝你的回答。它有助於我的研究。相同的+1。 – AYK 2012-04-25 05:48:49