Ошибка почтовой программы PHP - PullRequest
9 голосов
/ 09 февраля 2010

Я пытался использовать 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 = "admin@xxxxxxxxxxxx.in";  
        $mail->Password = "xxxxxxxx";   
        $mail->From = "admin@xxxxxxxxxxxx.in";
        $mail->FromName = "Mailer";
        $mail->AddAddress("xxxx@yahoo.co.in", "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";

        ?>

Ответы [ 9 ]

19 голосов
/ 19 сентября 2011

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

SSL = 465 TLS = 587

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

14 голосов
/ 09 февраля 2010

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

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

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

9 голосов
/ 20 марта 2013

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

5 голосов
/ 30 августа 2012

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

3 голосов
/ 08 сентября 2014

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

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 = "admin@gmail.com";

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

    $mail->setFrom('admin3@gmail.com', 'development');  //add sender email address.

    $mail->addAddress('admins@gmail.com', "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!";
    }
2 голосов
/ 06 ноября 2015

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

2 голосов
/ 09 апреля 2014

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

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

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

2 голосов
/ 09 февраля 2010

Может быть из-за огненной стены?

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

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

1 голос
/ 09 февраля 2010

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

...