PHPMAILER SERVER - > SMTP错误:密码命令失败SMTP连接()失败

时间:2016-07-11 14:24:53

标签: php email server smtp phpmailer

我试图在有人进入某个页面时发送电子邮件。这是PayPal付款确认。您支付了一些费用,并且在您看到所做内容的页面中,电子邮件会自动发送。

代码是下一个:

 function send_email($from, $to, $subject, $nombre,$apellido) {          

        $pagoReal = $_SESSION["Payment_Amount"];
        $monedaReal =  $_SESSION["currencyCodeType"];
        $estado = $_SESSION['estado'];
        $id = $_SESSION['idHash'];



        $mail = new PHPMailer();
        $mail->SMTPDebug=3;
        $mail->IsSMTP();
        $mail->Host = 'localhost';
        $mail->CharSet = "UTF-8";

        $mail->From = $from;
        $mail->FromName = 'Notificación de pago via Paypal';
        $mail->addAddress($to);

        $mail->WordWrap = 50;
        $mail->IsHTML(true);
         $mail->SMTPAuth = true;



        $contenido = "<html><body>
                    <p>Han realizado un nuevo ingreso via Paypal</p><br>
                    Nombre del cliente: $nombre $apellido<br>
                    Cantidad que pagó: $pagoReal $monedaReal <br>
                    Estado de la reserva:$estado  <br>
                    Enlace a la factura : href='xxxxx/$id<br>
                    </body></html>";


        $mail->Subject = $subject;
        $mail->Body = $contenido;

       ['tmp_name'],$_FILES['cv_contacto']['name']);



        if (!$mail->Send()) {
            echo 'Error enviando mensaje.';
            echo 'Mailer Error: ' . $mail->ErrorInfo;

            return "Mailer Error: " . $mail->ErrorInfo;
        } else {
            return 1;
        }

    }

然后我调用函数

    send_email('patata@patata.com', 'fran@patata.es','Payment of '. $firstName." ".$lastName,$firstName,$lastName);

我收到此错误

错误:身份验证失败:一般失败2016-07-11 14:20:51 SMTP错误:密码命令失败:535 5.7.8错误:身份验证失败:一般失败2016-07-11 14:20:51客户端 - &GT;服务器:退出2016-07-11 14:20:51服务器 - &gt;客户端:221 2.0.0 Bye 2016-07-11 14:20:51连接:关闭2016-07-11 14:20:51 SMTP connect()失败。错误enviando mensaje.Mailer错误:SMTP connect()失败。

知道我该怎么办?

谢谢!

3 个答案:

答案 0 :(得分:1)

请按照以下步骤操作。

  

使用应用程序密码:如果您使用两步验证,请尝试登录   使用应用程序密码。

     

允许不太安全的应用:如果您不使用两步验证,则为您   可能需要允许安全性较低的应用访问您的帐户。

     

如果您最近更改了Gmail密码,则可能需要   重新输入您的Gmail帐户信息或完全重复您的帐户   在其他电子邮件客户端上设置Gmail帐户。如果上面提示   没有帮助,访问   https://www.google.com/accounts/DisplayUnlockCaptcha并遵循   页面上的步骤。如果您通过工作,学校或   其他组织,访问   https://www.google.com/a/yourdomain.com/UnlockCaptcha并替换   yourdomain.com 使用您的域名。

答案 1 :(得分:0)

我已经解决了这个问题:

请按照以下步骤操作:

1)首先下载最新的PHPmailer文件。 https://github.com/PHPMailer/PHPMailer

a) Check its there at all (on terminal )

  ping smtp.gmail.com

  This should give you something like this:

    Trying 173.194.67.109...
    Connected to gmail-smtp-msa.l.google.com.
    Escape character is '^]'.
    220 mx.google.com ESMTP ex2sm16805587wjd.30 - gsmtp

b) openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587

    You should expect a response like this:

    Start Time: 1460541074
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
    ---
    250 SMTPUTF8

    Notice that the verify return code is 0, which indicates successful verification. 

    refer link : https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

2)Google现在不接受来自不太安全的应用程序的登录    打开链接:https://myaccount.google.com/security

     Firstly login your gmail account.

     a)Scroll to the bottom and turn ON "Allow less secure apps: ON". 

     b)Now when you add the SMTP details to "Send as" google will accept them.  
     c)You need to do this for the email ID you are adding in your Send as section.

3)脚本代码:

            require 'PHPMailerAutoload.php';


            $mail = new PHPMailer();

            $mail->isSMTP();                       // telling the class to use SMTP
            $mail->SMTPDebug = 2;                  
            // 0 = no output, 1 = errors and messages, 2 = messages only.

            $mail->SMTPAuth = true;                // enable SMTP authentication
            $mail->SMTPSecure = "tls";              // sets the prefix to the servier
            $mail->Host = "smtp.gmail.com";        // sets Gmail as the SMTP server
            $mail->Port = 587;                     // set the SMTP port for the GMAIL

            $mail->Username = "pradeep001.thakur@gmail.com";  // Gmail username
            $mail->Password = "********";      // Gmail password

            $mail->CharSet = 'windows-1250';
            $mail->SetFrom ('abcd@gmail.com'); // send to mail
            $mail->AddBCC ( 'test@gmail.com'); // send to mail
            $mail->Subject = $subject;
            $mail->ContentType = 'text/plain';
            $mail->isHTML(false);

            $body_of_your_email ="Hello Pradeep";
            $mail->Body = $body_of_your_email; 
            // you may also use $mail->Body =       file_get_contents('your_mail_template.html');
            $mail->AddAddress ('pradeep001.thakur@gmail.com', 'Recipients Name');     
            // you may also use this format $mail->AddAddress ($recipient);

           if(!$mail->Send())
           {
              echo   $error_message = "Mailer Error: " . $mail->ErrorInfo;
            } else 
           {
           echo   $error_message = "Successfully sent!";
           }

我希望它的工作正常。

由于

答案 2 :(得分:0)

我正在尝试进行大量测试(小时和小时......),但最佳配置是:   - “允许安全性较低的应用:开启”。有时这种变化将在10分钟后生效。   - 使用SSL配置和端口465,LOGIN。   - 如果您可以激活debbuging消息以了解其他详细信息,那就更好了。   - 某些类似Gmail的SMTP,需要配置IP地址以接受验证过程(https://support.google.com/accounts/answer/6010255)   - 如果您使用商务版,在GSuite的管理面板中也需要所有这些配置。

问候,希望帮助