为了账号安全,请及时绑定邮箱和手机立即绑定

需要使用 php mailer 从 gmail 发送邮件而不启用“安全性较低的应用程序”

需要使用 php mailer 从 gmail 发送邮件而不启用“安全性较低的应用程序”

PHP
慕田峪4524236 2021-12-24 16:08:07
我正在尝试使用 php mailer 从我的 gmail 帐户发送邮件。我知道为了使用 php 邮件程序发送邮件,我们需要从我们的 gmail 帐户设置中启用“安全性较低的应用程序”。还有一个选项,在不启用“不太安全的应用程序”的情况下,我们可以使用“应用程序密码”,通过启用两步验证从不太安全的应用程序发送邮件。但问题是使用“APP 密码”,我无法从 php 邮件程序发送邮件,但出现用户名和密码不被接受的错误。我搜索并发现,我们无法使用“应用程序密码”从安全性较低的应用程序发送邮件。从此链接中找到https://support.google.com/accounts/answer/185833?hl=en&authuser=5我使用以下 php 邮件程序代码发送邮件:<?php// Import PHPMailer classes into the global namespace// These must be at the top of your script, not inside a functionuse PHPMailer\PHPMailer\PHPMailer;use PHPMailer\PHPMailer\Exception;// Load Composer's autoloaderrequire 'vendor/autoload.php';// Instantiation and passing `true` enables exceptions$mail = new PHPMailer(true);try {//Server settings$mail->SMTPDebug = 2;                                       // Enable       verbose debug output$mail->isSMTP();                                            // Set mailer to use SMTP$mail->Host       = 'ssl://smtp.gmail.com';                 // Specify main and backup SMTP servers$mail->SMTPAuth   = true;                                   // Enable SMTP authentication$mail->Username   = username;$mail->Password   = password;$mail->SMTPSecure = 'ssl';                                  // Enable TLS encryption, `ssl` also accepted$mail->Port       = 465;//Recipients$mail->setFrom('test@gmail.com', 'Test');$mail->addAddress('test1@gmail.com', 'Test1');     // Add a recipient$mail->addAddress('test2@gmail.com');               // Name is optional$mail->addReplyTo('test@gmail.com', 'Test');// Content$mail->isHTML(true);                                  // Set email format to HTML$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';$mail->send();echo 'Message has been sent';} 请给出不启用“不太安全的应用程序”和使用gmail“应用程序密码”发送邮件的解决方案
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

如果您要避免这些事情,剩下的唯一选择是使用 PHPMailer 支持的 XOAUTH2 身份验证。配置起来既困难又复杂,并且可能会发生变化,因此与其将代码粘贴到此处以使其过时,不如让您参考源代码。将您的代码基于PHPMailer 提供的 gmail OAuth 示例,并使用项目 wiki 中的 PHPMailer gmail xoauth2 指南配置它并获取凭据。


查看完整回答
反对 回复 2021-12-24
?
动漫人物

TA贡献1815条经验 获得超10个赞

我得到了解决方案。我使用的刷新令牌就是这个令牌,这让我很头疼。

我使用的“刷新令牌”无效。一旦我重新生成刷新令牌,一切似乎都很好。邮件发送正确。


查看完整回答
反对 回复 2021-12-24
  • 2 回答
  • 0 关注
  • 219 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信