我需要每季度发送10000多封邮件。为此,我使用了每天触发的Windows服务,并且仅在第三个月之后才执行邮件功能。 我要从数据库中获取最近三个月的记录,并且需要为每条记录发送一封邮件。
我遇到的问题是我使用的邮件服务器不允许批量邮寄。
如何通过在每次发送之间提供延迟(每分钟20封邮件)来有效地做到这一点?
答案 0 :(得分:1)
有很多方法可以实现这一目标。我们曾经有类似的要求,并通过本地服务解决它,该服务将从特殊数据库表(邮件队列)中获取项目并单独发送每封邮件。随着时间的推移,队列由常规业务逻辑填充。必要的锁定也可以通过db来完成:SCHEDULE列存储发送邮件的预期计划时间。这样,该服务只收集那些“准备好”发送的邮件。成功发送后,另一列(SENT_TIMESTAMP)用于标记成功。
我们在ASP中实现了整个服务,并通过常规的Windows Task Planner作业触发了它。在您的情况下,服务将每分钟开始,队列将提供接下来的20个邮件。更简单的方法是使用SQL Server作业。 SQL Server也能够将邮件传递到本地SMTP服务器。
如果尚未完成,请注意问题:What is the best way to send large batches of emails in ASP.NET?