ZF2 在我尝试同时发送多封邮件时抛出未捕获的异常,使用SMTP服务器。
发送 5 封电子邮件后,它会抛出异常:
未捕获的异常:"无法从主机读取"来自 Zend''Mail''Protocol''AbstractProtocol
这是在SMTP服务器发送错误之后发生的:
此客户端的邮件提交速率已超出配置的限制
由于这是在调用析构函数时抛出的,因此我无法在我的脚本中捕获它。任何建议如何在我的脚本中捕获它。
与 Zend Framework 2 或任何其他库无关。您使用的邮件服务的消息非常清楚:您超过了速率限制。
无论如何,您有多种选择;
- 切勿在一次 while/for 循环中发送大量电子邮件,因为您没有很酷的付费电子邮件服务,该服务对您的帐户没有任何速率限制。(付费或非付费 几乎所有像您这样的服务都应用速率限制以防止滥用。这是正常的。
- 在脚本中添加一个
try {} catch() {}
块,当您超过限制时,只需停止,等待一段时间,然后重试。 - 您可以考虑编写一个 cronjob 和一个 CLI 脚本来每分钟发送 X 封电子邮件。
- 如果您需要发送数千封电子邮件,则通过使用该队列(一次 X 封电子邮件)来实现消息队列并发送电子邮件会更好。
- 请让您的邮件服务提供商提高限制。
- 如果费率仍然不够,请更换您的邮件服务提供商。