Я использую 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 = '[email protected]';
$m->Password = 'xxxxxxxxxxx';
$m->SMTPSecure = 'ssl';
$m->Port = "465";
$m->CharSet = 'UTF-8';
$m->From = '[email protected]';
$m->FromName = 'Chantier TN';
$m->addReplyTo('[email protected]', '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;
}
Список электронных писем хранится в сеансе для зацикливания с идентификатором, я получаю идентификатор из URL, используя структуру mvc, после выполнения этого кода я отображаю представление, которое отображает список отправленных электронных писем, и если возникает ошибка, я повторяю адрес электронной почты с ошибкой, через 5 секунд я перенаправляю на ту же страницу со следующим идентификатором, используя jquery.
вот изображение выхода:
Как документы указать:
«Ошибка SMTP: не удалось подключиться к узлу SMTP».
Это также может выглядеть как сбой подключения SMTP () или Called Mail () без подключения к выходу отладки. Об этом часто говорят как о проблеме PHPMailer, но почти всегда это связано с локальным отказом DNS, блокировкой брандмауэра или другой проблемой в вашей локальной сети. Это означает, что PHPMailer не может связаться с SMTP-сервером, указанным в свойстве Host, но точно не говорит, почему. Это также может быть вызвано отсутствием загруженного расширения openssl (см. Примечания по шифрованию ниже).
Поэтому я советую установить:
$m->SMTPDebug = 4;
чтобы получить более подробное сообщение и вернуться к 0
как только вы выясните причину.
Разместите расширенную отладочную информацию здесь, чтобы мы могли подробнее изучить ее.
Отладочная информация (из комментария — удалена метка времени):
SERVER -> CLIENT: 250-ns0.ovh.net Вы подключаетесь к mail751 250-AUTH ВХОД ВХОД ВХОД 250-AUTH = ВХОД В ВХОД 250-8BITMIME 250 РАЗМЕР 109000000
Запрошен метод аутентификации: UNKNOWN
Доступные на сервере методы аутентификации: LOGIN, PLAIN
Выбран метод аутентификации: ВХОД
КЛИЕНТ -> СЕРВЕР: AUTH LOGIN
SMTP -> get_lines (): $ data is «»
SMTP -> get_lines (): $ str равно «334 VXNlcm5hbWU6»
СЕРВЕР -> КЛИЕНТ: 334 VXNlcm5hbWU6
КЛИЕНТ -> СЕРВЕР: bm9yZXBseUBjaGFudGllci50bg ==
SMTP -> get_lines (): $ data is «»
SMTP -> get_lines (): $ str равно «334 UGFzc3dvcmQ6»
СЕРВЕР -> КЛИЕНТ: 334 UGFzc3dvcmQ6
КЛИЕНТ -> СЕРВЕР: Y2luMjM0NjQ4ODQ =
SMTP -> get_lines (): $ data is «»
SMTP -> get_lines (): $ str равно «535 авторизация не удалась (# 5.7.0)»
SERVER -> CLIENT: авторизация 535 не удалась (# 5.7.0)
ОШИБКА SMTP: сбой команды пароля: сбой авторизации 535 (# 5.7.0)
Ошибка SMTP: не удалось подтвердить подлинность.
КЛИЕНТ -> СЕРВЕР: ВЫЙТИ
SMTP -> get_lines (): $ data is «»
SMTP -> get_lines (): $ str равно «221 ns0.ovh.net Вы подключаетесь к mail751»
СЕРВЕР -> КЛИЕНТ: 221 ns0.ovh.net Вы подключаетесь к почте751
Подключение: закрыто
Так что, видимо, ovh не аутентифицирует вас. Может быть, это как-то ограничивает тебя?
Других решений пока нет …