与PHPMailer的SMTP连接出现问题


Getting trouble with SMTP connect with PHPMailer

我正在尝试使用PHPMailer发送SMTP安全邮件附件。

我用PHPMailer库创建了这个函数

public function sendCsv($subject,$body,$path,$mail_to,$from_name,$from_mail,$replyto){
    require getcwd() .'/lib/PHPMailerAutoload.php';             
    $mail = new PHPMailer;
    //$mail->SMTPDebug = 3;      // Enable verbose debug output
    $mail->isSMTP();              // Set mailer to use SMTP
    $mail->Host = 'smtp.gmail.com'; 
    $mail->SMTPAuth = true;                             
    $mail->Username = 'tester@mydomain.com';                
    $mail->Password = '**************';                          
    $mail->SMTPSecure = 'ssl';                            
    $mail->Port = 465;                            
    $mail->setFrom($from_mail, $from_name);
    $mail->addAddress($mail_to);  
    $mail->addReplyTo($replyto, 'no reply');
    $mail->addAttachment($path);        
    $mail->isHTML(true);                                  
    $mail->Subject = $subject;
    $mail->Body    = $body;
    //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
    if(!$mail->Send()) {
        $error = 'Mail error: '.$mail->ErrorInfo; 
        echo  $error;
        } else {
            $sucess = 'Mail sent!';
            echo  $sucess;
            }
    }

现在如果我注释$mail->isSMTP();它工作得很好。但我认为它不是SMTP安全的。否则我得到这个消息:"邮件错误:SMTP连接()失败。"

我搜索了这个问题,但没有得到我正在寻找的正确答案。请帮帮我。

我在一个开发服务器与HTACCESS保护

我已经找到了解决问题的细节https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting .

我刚从我的gmail帐户打开了不太安全的应用程序https://www.google.com/settings/security/lesssecureapps。

这需要几分钟或一个小时来激活。

我的当前代码:

public function sendCsv($subject,$body,$path,$mail_to,$from_name,$from_mail,$replyto){
            require getcwd() .'/lib/PHPMailerAutoload.php'; 
            $mail = new PHPMailer();
            $mail->isSMTP();   
            $mail->Host = 'smtp.gmail.com'; 
            //$mail->SMTPDebug = 2;                               
            $mail->SMTPAuth = true;   
            $mail->SMTPSecure = 'tls';                            
            $mail->Port = 587;  
            $mail->Username = 'mymail@gmail.com';                
            $mail->Password = 'mypass';                                     

            $mail->setFrom($from_mail, $from_name);
            $mail->addAddress($mail_to);  
            $mail->addReplyTo($replyto, 'no reply');
            $mail->addAttachment($path);        
            $mail->isHTML(true);                                  
            $mail->Subject = $subject;
            $mail->Body    = $body;
            //$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
            if(!$mail->Send()) {
                $error = 'Mail error: '.$mail->ErrorInfo; 
                echo $error;
            } else {
                $sucess = 'Mail sent!';
                echo  $sucess;
            }
        }

否则你必须从console.developers.google.com设置应用

遵循以下指南:https://github.com/PHPMailer/PHPMailer/wiki/Using-Gmail-with-XOAUTH2