2016-01-21 2 views
1

Я использую PHPMailer для отправки ежедневной электронной почты (максимум 100 сообщений электронной почты), мой скрипт отлично работает на локальном компьютере, но когда я загрузил его на свой сервер (размещен на OVH), иногда он блокирует и генерировать эту ошибку после отправки в среднем 20 писемPHPmailer smtp connect() не удалось на сервере ovh

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; 
} 

Список электронных писем хранится в сеансе, в котором выполняется цикл с идентификатором, я получаю идентификатор от ur l используя структуру mvc, после выполнения этого кода я визуализирую представление, в котором отображается список отправленного сообщения, а если есть ошибка, я выхожу из адреса электронной почты с ошибкой, через 5 секунд я перенаправляюсь на ту же страницу со следующим идентификатором используя jquery. здесь картина выхода: enter image description here

+0

Ответ Алекса на месте - но вам даже не приходило в голову следовать ссылке, которая была в сообщении об ошибке? Это прямо перед вами! – Synchro

ответ

1

Как docs точки выхода:

"SMTP Error: Could not connect to SMTP host."

This may also appear as SMTP connect() failed or Called Mail() without being connected in debug output. This is often reported as a PHPMailer problem, but it's almost always down to local DNS failure, firewall blocking or other issue on your local network. It means that PHPMailer is unable to contact the SMTP server you have specified in the Host property, but doesn't say exactly why. It can also be caused by not having the openssl extension loaded (See encryption notes below).

Так что мой совет должен установить:

$m->SMTPDebug = 4; 

, чтобы получить более подробное сообщение и изменения вернуться к 0, как только вы выясните причину.

Опубликуйте расширенную информацию об отладке здесь, чтобы мы могли дополнительно изучить ее.

Информация Debug (от комментариев - удалена временная метка):

SERVER -> CLIENT: 250-ns0.ovh.net You connect to mail751 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-8BITMIME 250 SIZE 109000000
Auth method requested: UNKNOWN
Auth methods available on the server: LOGIN,PLAIN
Auth method selected: LOGIN
CLIENT -> SERVER: AUTH LOGIN
SMTP -> get_lines(): $data is ""
SMTP -> get_lines(): $str is "334 VXNlcm5hbWU6 "
SERVER -> CLIENT: 334 VXNlcm5hbWU6
CLIENT -> SERVER: bm9yZXBseUBjaGFudGllci50bg==
SMTP -> get_lines(): $data is ""
SMTP -> get_lines(): $str is "334 UGFzc3dvcmQ6 "
SERVER -> CLIENT: 334 UGFzc3dvcmQ6
CLIENT -> SERVER: Y2luMjM0NjQ4ODQ=
SMTP -> get_lines(): $data is ""
SMTP -> get_lines(): $str is "535 authorization failed (#5.7.0) "
SERVER -> CLIENT: 535 authorization failed (#5.7.0)
SMTP ERROR: Password command failed: 535 authorization failed (#5.7.0)
SMTP Error: Could not authenticate.
CLIENT -> SERVER: QUIT
SMTP -> get_lines(): $data is ""
SMTP -> get_lines(): $str is "221 ns0.ovh.net You connect to mail751 "
SERVER -> CLIENT: 221 ns0.ovh.net You connect to mail751
Connection: closed

Так, по-видимому, OVH не аутентичности вас. Возможно, ovh каким-то образом ограничивает вас?

+0

Сделал бы это комментарий, но он не подходит. –

+0

Как я могу получить информацию об отладке после перезагрузки страницы? ошибка появляется иногда не обычно – RaisoMos

+0

Результат должен быть в '$ m-> ErrorInfo'. И вы уже храните его в '$ _SESSION'; –

Смежные вопросы