【发布时间】:2013-08-13 22:00:05
【问题描述】:
我需要每天向大约 200 位用户发送一封包含更新网站内容的电子邮件。我设置的方式是向每 20 位用户发送一封电子邮件(全部密件抄送),因此总共只发送了大约 10 封电子邮件。我正在使用 Wordpress wp_mail() 函数与 WP-Mail-SMTP 插件一起进行发送,以便使用预先配置的 gmail 帐户发送电子邮件。直到大约一周前,一切都运行良好。现在,在发送 5 封电子邮件后,脚本突然中断。
//SEND THE EMAIL TO 20 USERS AT A TIME
foreach ($users as $user) {
array_push($mailgroup, $user->user_email);
if(count($mailgroup) == 20) {
$headers = $headersBase . 'Bcc: '. implode(',', $mailgroup);
wp_mail('', 'Email Update', $strBody, $headers);
$sentEmailCount++;
$headers = '';
$mailgroup = array();
}
$sentUserCount++;
}
我认为其原因是发送的最终消息中的电子邮件地址被退回,然后无论出于何种原因循环停止。有没有办法忽略任何错误并继续循环,而不管电子邮件是否退回?
【问题讨论】:
-
假设 wp_mail 将被破坏,只需将其放入 try catch 或仅使用
@符号抑制... -
如果它导致脚本停止,那么它应该记录一个错误 - 你为什么不知道那个错误是什么?此外,即使没有错误,您的代码也无法向最后一组收件人发送任何电子邮件,除非它是 20 的倍数。
-
@symcbean:我正在使用 wp_schedule_event() 方法运行脚本。它每晚在后台运行,并向大量用户发送电子邮件。如果不发送会惹恼我的最终用户的电子邮件,我就无法真正测试它。我将如何捕获错误并记录它? wp_mail 可以在这里使用 try/catch 吗?我在脚本的开头添加了“error_reporting(0)”以忽略错误,我打算看看今晚会发生什么。想法? PS:我会在脚本循环后发送最后一封电子邮件,以防有更多地址。
-
好吧...“error_reporting(0)”不起作用。循环仍然炸弹。
-
No error_logging() 不应该有任何影响 - 添加 try/catch 不会有帮助 - 如果发生致命错误,则不会被捕获.建议你去阅读PHP手册中关于错误处理的手册章节