2015-02-23 93 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任务检查新订单,发送电子邮件任务在预定时间内向用户发送提醒。