2015-02-23 75 views
0

如何設置下面的代碼以每15分鐘生成一次提醒等多個電子郵件?感謝您的任何指導。如何使用ASP.NET VB.net發送多封電子郵件

Private Sub SendEmail(ByVal pharmEmail As String, ByVal backupEmail As String) 
Dim smtpClient As New System.Net.Mail.SmtpClient() 
Dim message As New System.Net.Mail.MailMessage() 

Try 
    Dim fromAddress As New System.Net.Mail.MailAddress(WebConfigurationManager.AppSettings("EmailFromAddr"), WebConfigurationManager.AppSettings("EmailFromName")) 
    message.From = fromAddress 
    message.To.Add(pharmEmail) 
    message.Subject = WebConfigurationManager.AppSettings("EmailSubject") 
    message.Priority = Net.Mail.MailPriority.High 
    If (WebConfigurationManager.AppSettings("backupEnabled") = True) Then 
     message.CC.Add(backupEmail) 
    End If 
    message.IsBodyHtml = True 
    Dim orderURL As New HyperLink 
    orderURL.Text = "here" 
    orderURL.NavigateUrl = "http://" & WebConfigurationManager.AppSettings("ServerName") & "/User/ReviewOrder.aspx?orderID=" & webOrderID 
    message.Body = "An order was created using the account of " + Profile.FirstName.ToString() + " " + Profile.LastName.ToString() + ". " + WebConfigurationManager.AppSettings("EmailBody") + "<a href='" + orderURL.NavigateUrl + "'>here.</a>" 
    'message.Body = WebConfigurationManager.AppSettings("EmailBody") & " " & orderURL. 
    smtpClient.Send(message) 
Catch ex As Exception 
    ErrorHandler.WriteError(ex.ToString) 
    Throw ex 
End Try 
+1

你將需要一個[能夠運行後臺任務的庫](http://www.hanselman.com/blog/HowToRunBackgroundTasksInASPNET.aspx)。 – mason 2015-02-23 18:27:56

+0

創建一個控制檯程序並使用計劃任務計劃它。 – 2015-02-23 18:28:31

+0

或者如果您正在使用SQL Server計劃作業運行,並通過dbmail發送電子郵件 – Jeremy 2015-02-23 18:29:36

回答

1

我同意關於調度程序的意見。如果你不喜歡,你可以創建一個windows服務來做到這一點。如果你想每隔X分鐘開啓一次程序,這將解決問題。

您沒有足夠的代碼來發送電子郵件,因此您必須用一些邏輯來包裝這些信息,以便根據需要發送電子郵件信息來啓動例程。這很可能存儲在數據庫(收件人,電子郵件)或其他持久存儲中。

我很小心每15分鐘發送一次提醒給同一個人的想法,因爲你很可能會把他們趕走(除非這是你的意圖?)。

+0

從該代碼部分生成的電子郵件來自提交的訂單,該提交的訂單向提交者發送提醒以驗證他/她的訂單。目的是發送提醒,以便訂單的提交者對其進行驗證。 – Loic 2015-02-23 18:47:40

+0

如果您決定使用Windows服務,請特別小心檢測並刪除任何可能的內存泄漏,否則可能會導致服務(最佳情況)或服務器(最壞情況)崩潰。不要相信GC爲你工作。 – 2015-02-23 20:26:56

+0

在這種情況下,您將用戶的電子郵件置於提醒隊列中,並將其從隊列中發送出去(注意:此處的隊列可以是表格)。然後,您可以使用調度程序每隔X分鐘檢查一次隊列,或者設置一項服務等。就我個人而言,我會質疑商業用戶對此的要求,因爲我已將購物車放滿並返回並刪除它們或發送給他們基於我的選擇。它會讓我得到一堆電子郵件,提醒我提交購物車,我可能會停止與這樣做的網站做生意。只是我的兩分錢。 – 2015-02-23 22:42:42

0

謝謝大家的貢獻。我決定創建一個包含SQL和發送電子郵件任務的SSIS包。 SQL任務檢查新訂單,發送電子郵件任務在預定時間內向用戶發送提醒。