我正在使用 PHPMailer 发送每日电子邮件(最多 100 封电子邮件),我的脚本在本地运行良好,但是当我将其上传到我的服务器(托管在 OVH)时,有时它会在平均发送 20 封电子邮件后阻塞并生成此错误
SMTP connect() failed https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
我联系了 OVH,他们很遗憾我的电子邮件地址没有问题,所以我认为这是我的代码中的一个错误,这是我的代码:
$m = new PHPMailer;
$mail = new Mailing();
$admin = new Administrateur();
$m->isSMTP();
$m->IsHTML(true);
$m->SMTPAuth = true;
$m->SMTPDebug = 0;
$m->SMTPKeepAlive = true;
$m->Host = 'ssl0.ovh.net';
$m->Username = 'exemple@exemple.com';
$m->Password = 'xxxxxxxxxxx';
$m->SMTPSecure = 'ssl';
$m->Port = "465";
$m->CharSet = 'UTF-8';
$m->From = 'exemple@exemple.com';
$m->FromName = 'Chantier TN';
$m->addReplyTo('exemple@exemple.com', 'Reply adress');
$m->Subject = 'Alerte quotidienne';
$error = false;
$alertes = Session::get('alertes');
$date = date('Y-m-d h:i:s');
$token = $alertes[$id]['id_cli'].'-'.strtotime($date);
$m->addAddress($alertes[$id]['email'], strtoupper($alertes[$id]['nom']).' '.$alertes[$id]['prenom']);
Session::delete('send');
$m->Body = $mail->generateBodyForAlerte(strtoupper($alertes[$id]['nom']).' '.$alertes[$id]['prenom'], $alertes[$id]['leads'], $token);
if ($m->send()) {
$mail->set('type_mail', 1);
$mail->set('date_send', $date);
$mail->set('id_cli', $alertes[$id]['id_cli']);
$mail->set('id_op', $admin->getId());
$mail->set('content', Session::get('send'));
$mail->save();
$s = Session::exists('sent') ? Session::get('sent') : array();
$s[] = $alertes[$id]['email'];
Session::put('sent', $s);
}
else{
$error = $m->ErrorInfo;
$s = Session::exists('notsend') ? Session::get('notsend') : array();
$s[] = $alertes[$id]['email'].' error: '.$error;
Session::put('notsend', $s);
}
$m->clearAddresses();
if (!isset($_SESSION['alertes'][$id+1])) {
$next = false;
}
else{
$next = $id+1;
}
电子邮件列表存储在会话中以使用 id 循环,我使用 mvc 结构从 url 获取 id,执行此代码后,我呈现一个显示已发送电子邮件列表的视图,如果有错误我回显输出错误的电子邮件地址,5 秒后我使用 jquery 重定向到具有下一个 ID 的同一页面。这是输出的图片: