Ошибка почтовой программы PHP

Я пытался использовать php mailer, но ошибки следующие.

SMTP -> FROM SERVER:
SMTP -> FROM SERVER:
SMTP -> ERROR: EHLO not accepted from server:
SMTP -> FROM SERVER:
SMTP -> ERROR: HELO not accepted from server:
SMTP -> ERROR: AUTH not accepted from server:
SMTP -> NOTICE: EOF caught while checking if connectedSMTP Error: Could not authenticate. Message could not be sent.

Mailer Error: SMTP Error: Could not authenticate. 

и мой код

 <?php
        require("class.phpmailer.php")
        $mail = new PHPMailer();        
        $mail->IsSMTP();                                    
        $mail->Host = "smtp.gmail.com";  
        $mail->Port = 465;        
        $mail->SMTPAuth = true;     

        $mail->SMTPDebug = 2;  
        $mail->Username = "[email protected]";  
        $mail->Password = "xxxxxxxx";   
        $mail->From = "[email protected]";
        $mail->FromName = "Mailer";
        $mail->AddAddress("[email protected]", "mine");               
        $mail->WordWrap = 50;                                 
        $mail->IsHTML(true);                                  

        $mail->Subject = "Here is the subject"  
        $mail->Body    = "This is the HTML message body <b>in bold!</b>";
        $mail->AltBody = "This is the body in plain text for non-HTML mail clients";


        if(!$mail->Send())  {
           echo "Message could not be sent. <p>";
           echo "Mailer Error: " . $mail->ErrorInfo;
           exit;
        }
        echo "Message has been sent";

        ?>

person ArK    schedule 09.02.2010    source источник
comment
вам нужно безопасное соединение, не так ли?   -  person Horia Dragomir    schedule 09.02.2010


Ответы (9)


Некоторые серверы (особенно виртуальный хостинг) будут блокировать использование SSL с SMTP, однажды у меня была такая же проблема.

Либо измените хост, если можете, попробуйте использовать функцию PHP mail() по умолчанию или отправьте через другой почтовый сервер, который не требует SSL, например. порт 25, а не 465.

Что-то вроде AuthSMTP будет лучшим выбором для альтернативного почтового сервера.

person fire    schedule 09.02.2010
comment
Я попытался использовать функцию почты PHP, но почта тоже не отправлялась. - person user2480288; 25.04.2014

Я получил это из-за неправильного порта для SSL.

SSL = 465 TLS = 587

См.: http://mail.google.com/support/bin/answer.py?hl=ru&answer=13287

person Ashley Schroder    schedule 18.09.2011
comment
Этот ответ ... это тот, который, наконец, сработал для меня после долгих поисков и устранения неполадок. Спасибо, сэр. - person Joel; 11.04.2015

У меня были те же проблемы, кажется, мы должны установить значение SMPTSecure. Сначала я изменил порт с 465 на 587 и добавил:
$mail->SMTPSecure = "tls"; и это сработало :)

person mana    schedule 20.03.2013

Если вы работаете на своем локальном хосте, просто перейдите в Расширение PHP и включите или проверьте php_openssl, чтобы получить доступ к портам SSL.

person Tabish    schedule 30.08.2012

попробуйте этот код

require 'PHPMailerAutoload.php';

    //Create a new PHPMailer instance
    $mail = new PHPMailer();
    //Tell PHPMailer to use SMTP
    $mail->IsSMTP(); 
    //Enable SMTP debugging
    // 0 = off (for production use)
    // 1 = client messages
    // 2 = client and server messages
    //$mail->SMTPDebug = 2;

    //Ask for HTML-friendly debug output
    //$mail->Debugoutput = 'html';

    //Set the hostname of the mail server
    $mail->Host = 'smtp.gmail.com';

    //Set the SMTP port number - 587 for authenticated TLS, a.k.a. RFC4409 SMTP submission
    $mail->Port = 465;

    //Set the encryption system to use - ssl (deprecated) or tls
    $mail->SMTPSecure = 'ssl';

    //Whether to use SMTP authentication
    $mail->SMTPAuth = true;

    //Username to use for SMTP authentication - use full email address for gmail
    $mail->Username = "[email protected]";

    //Password to use for SMTP authentication
    $mail->Password = "admin123";

    $mail->setFrom('[email protected]', 'development');  //add sender email address.

    $mail->addAddress('[email protected]', "development");  //Set who the message is to be sent to.
    //Set the subject line
    $mail->Subject = $response->subject;

    //Read an HTML message body from an external file, convert referenced images to embedded,
    //convert HTML into a basic plain-text alternative body
    $mail->Body     = 'Name: '.$data['name'].'<br />Location: '.$data['location'].'<br />Email: '.$data['email'].'<br />Phone:'.$data['phone'].'<br />ailment: '.$data['ailment'].'<br />symptoms: '.$data['symptoms'];

    //Replace the plain text body with one created manually
    $mail->AltBody = 'This is a plain-text message body';

    //Attach an image file
    //$mail->addAttachment('images/phpmailer_mini.gif');
    //$mail->SMTPAuth = true;
    //send the message, check for errors
    if (!$mail->send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }
person Priyank    schedule 08.09.2014
comment
$mail-›SMTPSecure = 'ssl'; сделал разницу для меня, спасибо! - person Cyrille Armanger; 30.01.2015
comment
@ Cyrille Armanger примите ответ, если это работает :) заранее спасибо - person Priyank; 30.01.2015
comment
Я не оригинальный плакат, это просто помогло мне. - person Cyrille Armanger; 30.01.2015

Была такая же проблема, измените номер порта в настройках почты opencart на 587 и работает нормально

person user2309537    schedule 06.11.2015

Может из-за брандмауэра?

Если вы не можете войти в Google Talk или получаете сообщение об ошибке "Не удалось пройти аутентификацию на сервере", проверьте, установлен ли у вас персональный брандмауэр и не находится ли ваш компьютер за прокси-сервером, для которого требуется имя пользователя и пароль.

http://www.google.com/support/talk/bin/answer.py?hl=ru&answer=30998

person Shoban    schedule 09.02.2010
comment
разговор не почта, не так ли? - person hakre; 12.08.2013

Я использую один и тот же сценарий для нескольких клиентов и сталкиваюсь с этой проблемой только при развертывании на облачных провайдерах Amazon EC2 (таких как Openshift).

Это проверенные настройки в phpmailer: $mail->SMTPSecure = "tls"; // устанавливает префикс для сервера $mail->Host = "smtp.gmail.com"; // устанавливает GMAIL в качестве SMTP-сервера $mail->Port = 587;

«но» Google блокирует эти службы как «анти-спам» / политический маневр, и это поймало меня, потому что это работает локально и на большинстве хостинг-провайдеров, вы ничего не можете сделать, когда они не принимают исходящие сообщения от DNS/IP ваших хостов. Примите это и продолжайте поиск другого smtp-сервера для маршрутизации сообщений.

person user3231324    schedule 09.04.2014

не уверен, но попробуй $mail->Host = "smtp.gmail.com" =>$mail->Host = "smtp.google.com"

person Young    schedule 09.02.2010