使用PHPMailer通过gmail进行身份验证
我正试图用PhpMailer发送一封带有表单的电子邮件,但效果不好。 使用localhost xampp,它可以完美地工作,但当上传到我的网站时,它会导致错误, 检查后,我明白这是因为gmail阻止了我(我已经在gmail上启用了不太安全的应用程序) 唯一可行的方法是从代码中删除isSmtp(),但我认为这不是一个好主意。 有什么建议吗? 代码如下:使用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
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代码>,您将至少能够看到服务器在说什么,并且故障排除指南中很可能会介绍它所说的内容。