【发布时间】:2012-04-27 12:30:27
【问题描述】:
我正在使用SmtpClient 和MailMessage 从ASP.Net 代码发送电子邮件。
我希望能够根据业务逻辑延迟发送电子邮件。
我将能够生成一个DateTime 对象,说明电子邮件应该何时实际送达。
我知道我可以创建一个 Windows 服务 来使用 Sql Server 数据库作为电子邮件存储来安排电子邮件传递。但我不想在托管服务器上部署额外的服务。
我也知道我可以创建一个SQL Server 工作来实现这一点,但我不想这样做,除非,除非使用纯 ASP.NET 无法实现这一点
需要注意的是,我的代码检查服务器上是否启用了MSMQ。如果是,MessageQueue 类用于电子邮件传递。所以任何关于使用队列实现这一点的建议都会有所帮助。
顺便说一句,解决方案应该适用于两种情况(即SmtpClient 和MessageQueue。
我已经查看了 this 和 this 问题及其接受的答案。我不想使用第 3 方产品,除非使用纯 ASP.NET 无法实现这一点
附: .Net Framework版本:3.5,环境应该是IIS 7和Sql Server 2008。
【问题讨论】:
-
您可以简单地添加一些应用程序逻辑来每 X 分钟发送一次所有待处理的消息。您可以在 Application_Start 事件中连接一个计时器。只要确保您的 asp.net 应用程序在 X 分钟内没有访问者时没有关闭。
-
@CodingBarfield:如果你能展示一些示例代码会很棒吗?我怀疑
make sure asp.net application isn't shut down if there are no visitors for X minutes的努力很高。那么你能写一个答案来显示你的实现方法供我验证吗? -
@AYKS对不起,我最近使用 asp.net 的时间还不够多,无法提供有保证的工作解决方案。这可能是一个微不足道的 IIS 切换或一些难以做到的事情,但我不能提供任何保证。
标签: c# asp.net email message-queue