延迟使用MailMessage和SmtpClient或MessageQueue发送电子邮件

时间:2012-04-16 06:38:56

标签: c# asp.net email message-queue

我正在使用SmtpClientMailMessageASP.Net代码发送电子邮件。 我希望能够延迟基于业务逻辑的电子邮件传递。 我将能够生成一个关于何时实际发送电子邮件的DateTime对象。

我知道我可以使用Sql Server数据库作为电子邮件存储来创建 Windows服务来安排电子邮件传送。但我不想在托管服务器上部署额外的服务。

我也知道我可以创建一个SQL Server工作来实现这一目标,但我不想,除非,使用纯ASP.NET

无法实现这一目标。

值得注意的是,我的代码会检查服务器上是否启用了MSMQ。如果是,MessageQueue类用于电子邮件传递。因此,任何使用队列实现此目标的指针都会有所帮助。

顺便说一下,解决方案应该适用于两种情况(即使用SmtpClient以及MessageQueue

我已经审核了thisthis个问题及其已接受的答案。我不希望使用第三方产品,除非使用纯ASP.NET

无法实现

P.S。 .Net Framework版本:3.5,IIS 7和Sql Server 2008应该是环境。

2 个答案:

答案 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)

经过客户的一些研究和澄清,我决定创建一个长时间运行的后台线程,它将处理每个定义时间发送的电子邮件,如果应用程序池由于不活动而被关闭,则无需担心