我正在使用SmtpClient
和MailMessage
从ASP.Net
代码发送电子邮件。
我希望能够延迟基于业务逻辑的电子邮件传递。
我将能够生成一个关于何时实际发送电子邮件的DateTime
对象。
我知道我可以使用Sql Server
数据库作为电子邮件存储来创建 Windows服务来安排电子邮件传送。但我不想在托管服务器上部署额外的服务。
我也知道我可以创建一个SQL Server
工作来实现这一目标,但我不想,除非,使用纯ASP.NET
值得注意的是,我的代码会检查服务器上是否启用了MSMQ
。如果是,MessageQueue
类用于电子邮件传递。因此,任何使用队列实现此目标的指针都会有所帮助。
顺便说一下,解决方案应该适用于两种情况(即使用SmtpClient
以及MessageQueue
。
我已经审核了this和this个问题及其已接受的答案。我不希望使用第三方产品,除非使用纯ASP.NET
P.S。 .Net Framework版本:3.5,IIS 7和Sql Server 2008应该是环境。
答案 0 :(得分:1)
有关保持计时器在asp.net中运行的一些信息,包括关于永远在线方案的好评:
Start timer on web application start
您可以使用以下命令阻止asp.net关闭:
Can you prevent your ASP.NET application from shutting down?
您只需使用计时器检查数据库并发送所有待处理的邮件。
请添加有关您正在使用的asp.net版本和IIS托管版本的更多信息
由于许多可能的问题取决于这些版本。
答案 1 :(得分:0)
经过客户的一些研究和澄清,我决定创建一个长时间运行的后台线程,它将处理每个定义时间发送的电子邮件,如果应用程序池由于不活动而被关闭,则无需担心