Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
限制ColdFusion每秒发送到AWS SES的电子邮件数量_Coldfusion_Amazon Ses_Coldfusion Administrator - Fatal编程技术网

限制ColdFusion每秒发送到AWS SES的电子邮件数量

限制ColdFusion每秒发送到AWS SES的电子邮件数量,coldfusion,amazon-ses,coldfusion-administrator,Coldfusion,Amazon Ses,Coldfusion Administrator,我目前在ColdFusion 11的mail.log中看到了一系列相同的错误: com.sun.mail.smtp.SMTPSendFailedException:454节流失败:超过最大发送速率。 在同一个日期时间有200封左右的邮件,然后在另一个随机时间又有200封左右的邮件(可能是几小时后的另一封邮件) 我们使用的是Amazon SES,我们帐户上的最大发送速率为“14封电子邮件/秒””。根据我们在mail.log中看到的错误,我们假设ColdFusion试图一次发送太多邮件,超过了这个速

我目前在ColdFusion 11的mail.log中看到了一系列相同的错误:

com.sun.mail.smtp.SMTPSendFailedException:454节流失败:超过最大发送速率。

在同一个日期时间有200封左右的邮件,然后在另一个随机时间又有200封左右的邮件(可能是几小时后的另一封邮件)

我们使用的是Amazon SES,我们帐户上的最大发送速率为“14封电子邮件/秒””。根据我们在mail.log中看到的错误,我们假设ColdFusion试图一次发送太多邮件,超过了这个速率这个假设听起来正确吗?

环顾CF 11管理员,我不确定我们需要做哪些调整以确保CF不超过14/s速率。以下是我们当前的一些设置(在CF管理员>服务器设置>邮件下),这些设置可能适用,也可能不适用:

[x]维护与邮件服务器的连接
连接超时(秒):60
[]启用到邮件服务器的SSL套接字连接
[x] 启用到邮件服务器的TLS连接

假脱机间隔(秒):15
邮件递送线程:10
[x] 要传递到磁盘的假脱机邮件消息

后台打印到内存的最大邮件数:50000

当SMTP服务器拒绝邮件传输时,ACF服务器将重新存储这些邮件以备将来发送,并定期重试。因此,您可能不需要添加额外的代码来处理它们,除非您正在处理成百上千的电子邮件

如果后者中的任何一个是正确的,请向AWS请求提高速率限制,或向提供更高速率的其他事务性电子邮件提供商(例如SendGrid)寻求帮助


另一个选项是和,并使用其多发送选项来绕过单个SMTP请求的限制。如果发送的电子邮件是错误报告,我建议使用单独的错误跟踪应用程序,如或,以消除冗余的事务性错误报告邮件,从而释放真正的应用程序事务性消息的限制。

Ps.您可以通过应用于aws请求并提高发送速率,在对设置进行更多的修改之前,可能值得一试。谢谢,很高兴知道这一点。我们目前正处于SES投诉率的试用期(我们正在努力纠正这一点——绝对是无意的),所以我不确定现在会发生什么,呵呵。在我们处理完投诉后,我可能会要求更高的发送速率。无论如何,很难找到关于邮件发送线程如何工作的文档。我不确定他们只会发送一封邮件,也许会处理整个队列。Spool间隔只是定义了目录设置的频率。根据我目前找到的所有信息,看起来我必须在它到达cfmailer之前构建自己的批处理程序。也就是说,如果发送量超过SES限制,请将电子邮件列表保存到数据库中。然后,设置一个计划任务,使其每隔一段时间在电子邮件列表中运行一次,并对每个批分别发送cfmail,直到该任务计划再次运行为止。@jontro-我认为每个线程都会尝试发送尽可能多的队列,根据等待的项目总数,发送到某个批大小。所以线程越多,一次可能发送的消息就越多。谢谢。是的,在当前的用例中,我一次处理500封电子邮件,但这可能会开始推到1000封。这些是论坛订阅通知,而不是错误报告。我将研究SES API-谢谢。我们收到了AWS SES的加价,现在一切都很好。我不确定处于我们这种地位的人需要这么高的费率有多普遍,但一旦我们的账户信誉良好,并且清楚地解释了我们的具体用例,SES就没有任何问题了。谢谢你的建议。