Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHPMailer通过gmail进行身份验证_Php_Email_Smtp_Gmail_Phpmailer - Fatal编程技术网

使用PHPMailer通过gmail进行身份验证

使用PHPMailer通过gmail进行身份验证,php,email,smtp,gmail,phpmailer,Php,Email,Smtp,Gmail,Phpmailer,我正试图用PhpMailer发送一封带有表单的电子邮件,但效果不好。 使用localhost xampp,它可以完美地工作,但当上传到我的网站时,它会导致错误, 检查后,我明白这是因为gmail阻止了我(我已经在gmail上启用了不太安全的应用程序) 唯一可行的方法是从代码中删除isSmtp(),但我认为这不是一个好主意。 有什么建议吗? 代码如下: if (array_key_exists('attachment', $_FILES)) { $img_name = $_FILE

我正试图用PhpMailer发送一封带有表单的电子邮件,但效果不好。 使用localhost xampp,它可以完美地工作,但当上传到我的网站时,它会导致错误, 检查后,我明白这是因为gmail阻止了我(我已经在gmail上启用了不太安全的应用程序) 唯一可行的方法是从代码中删除isSmtp(),但我认为这不是一个好主意。 有什么建议吗? 代码如下:

    if (array_key_exists('attachment', $_FILES)) {
    $img_name = $_FILES['attachment']['name'];
    $upload = tempnam(sys_get_temp_dir(), hash('sha256', $_FILES['attachment']['name']));
    $uploadfile = $_SERVER['DOCUMENT_ROOT'].'/'.$img_name;
    if (move_uploaded_file($_FILES['attachment']['tmp_name'], $uploadfile)) {
        if (!$err) {
            $mail = new PHPMailer(true);
          //  $mail->isSMTP();
            // $mail->SMTPDebug = 3;
            $mail->SMTPSecure = 'tls';
            $mail->Host = 'smtp.gmail.com';
            // set a port
            $mail->Port = 587;
            $mail->SMTPAuth = true;
            // set login detail for gmail account
            $mail->Username = '******';
            $mail->Password = '********';
            $mail->CharSet = 'utf-8';
            // set subject
            $mail->setFrom($email, $username);
            $mail->addAddress($to);
            $mail->addReplyTo($email, $username);
            $mail->addAttachment($uploadfile, 'My uploaded image');
            $mail->IsHTML(true);
            $mail->Subject = 'Contact form: Testing Feedback';
            $mail->Body = $reason;
            if (!$mail->send()) {
                $msg .= "Mailer Error: " . $mail->ErrorInfo;
            } else {
                $msg .= "Message sent!";
            }
        }
    } else {
                $msg .= 'Failed to move file to ' . $uploadfile;
    }
}
获取以下错误

Fatal error: Uncaught PHPMailer\PHPMailer\Exception: SMTP Error: Could not authenticate. in /storage/ssd1/218/15386218/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php:2063 Stack trace: #0 /storage/ssd1/218/15386218/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php(1878): PHPMailer\PHPMailer\PHPMailer->smtpConnect(Array) #1 /storage/ssd1/218/15386218/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php(1601): PHPMailer\PHPMailer\PHPMailer->smtpSend('Date: Thu, 12 N...', 'This is a multi...') #2 /storage/ssd1/218/15386218/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php(1437): PHPMailer\PHPMailer\PHPMailer->postSend() #3 /storage/ssd1/218/15386218/public_html/index.php(72): PHPMailer\PHPMailer\PHPMailer->send() #4 {main} thrown in /storage/ssd1/218/15386218/public_html/vendor/phpmailer/phpmailer/src/PHPMailer.php on line 2063

这些看起来可能是你真正的证件。在共享代码时,请始终检查用户名和密码。还请共享您遇到的任何错误。我们不知道当你说“不好用”或“有问题”时会发生什么。@RoAchterberg谢谢你,我的错!!在issueCommenting out
isSMTP
中添加的错误只会转移问题,而不会解决问题。请阅读PHP编译器故障排除指南中的说明。主要是gmail做了很多非标准的事情,这使得它很难连接;这是gmail破坏的东西,而不是客户端。它可能在本地工作,而不是在你的服务器上工作有几个原因:你的主机提供商可能正在重定向流量;gmail检测到的登录位置与您通常的登录位置不同,并施加了额外的限制。如果设置
$mail->SMTPDebug=2,您将至少能够看到服务器在说什么,并且故障排除指南中很可能会介绍它所说的内容。