2011-04-12 68 views
0

我有一个要求,我需要每季度发送10000+邮件。为此,我使用了一个windows服务,每天触发,并在第三个月后才执行邮件功能。 我必须从数据库中提取最近三个月的记录,并且需要为每个记录发送一个邮件如何按计划实施使用Windows服务的批量邮件?

我面临的问题是我使用的邮件服务器不允许批量邮寄。

我怎样才能有效地提供每次发送之间的延迟(每封邮件20封)?

回答

1

有很多方法可以实现这一点。我们曾经有过类似的需求,并通过本土服务解决问题,该服务将从特殊的数据库表(邮件队列)中获取项目并个别发送每封邮件。常规业务逻辑会随时间填充队列。必要的锁定也可以通过db完成:SCHEDULE列存储发送邮件的预期计划时间。这种方式服务只收集那些准备发送的邮件。成功发送后,另一列(SENT_TIMESTAMP)用于标记成功。

我们在ASP中实现了整个服务,并通过常规的Windows任务计划程序作业触发它。就你而言,服务将每分钟开始一次,队列将提供接下来的20封邮件。更简单的方法可能是使用SQL Server作业。 SQL Server也可以将邮件发送到本地SMTP服务器。

如果还没有完成,请注意SO问题以及:What is the best way to send large batches of emails in ASP.NET?