You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用PHPMailer调用Gmail SMTP发送邮件时出现SMTP认证失败错误的原因及解决方法

PHPMailer 连接Gmail SMTP认证失败问题排查与解决

从你提供的错误日志来看,核心问题是Google拒绝了你的用户名和密码认证(535-5.7.8 Username and Password not accepted),结合你的操作环境和已做的设置,我整理了以下排查步骤和解决方案:

一、先修复代码中的明显错误

我注意到你代码里有两处邮箱地址拼写错误,虽然这不一定是直接导致认证失败的原因,但会影响邮件发送的合法性,先修正:

  • $mail->setFrom('myemail.com', 'Mailer'); 修改为:
    $mail->setFrom('myemail@gmail.com', 'Mailer');
    
  • $mail->addReplyTo('myemai@gmail.com', 'Mailer'); 修改为:
    $mail->addReplyTo('myemail@gmail.com', 'Mailer');
    

二、解锁Google账户的陌生设备访问限制

本地XAMPP环境的请求很可能被Google判定为"陌生设备/位置登录",从而拦截认证请求:

  • 登录你的Google账户,找到「解锁验证码」相关的安全验证页面,点击允许当前设备/IP的访问请求(操作后等待1-2分钟再测试)。

三、重新确认Google账户的安全设置

即使你说已经开启了"不太安全的应用"权限,仍建议再检查一遍:

  • 进入Google账户的「安全」设置页面,找到「不太安全的应用访问」选项,确保它处于开启状态。
  • 如果找不到这个选项,说明你的Google账户已被强制要求使用OAuth2认证(Google逐步淘汰了"不太安全应用"的支持),这时你需要切换到PHPMailer的OAuth2认证模式,具体可以参考PHPMailer官方文档中的OAuth2配置示例。

四、尝试使用应用专用密码(可选)

如果上述方法无效,可以尝试开启双重验证后使用应用专用密码:

  1. 开启Google账户的双重验证功能;
  2. 在安全设置中创建一个「应用专用密码」(选择"邮件"应用,"其他设备"类型);
  3. 将代码中的 $mail->Password 替换为这个生成的应用专用密码,而不是你的原账户密码。

五、检查本地环境的SSL配置

XAMPP默认的PHP可能缺少正确的CA证书,导致TLS连接验证失败:
可以临时在代码中添加SSL选项跳过验证(仅用于测试,生产环境不建议):

$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);

生产环境建议下载并配置正确的CA证书到PHP的php.ini中。

按照上述步骤逐一排查,应该能解决你的认证失败问题。

内容的提问来源于stack exchange,提问作者user15336984

火山引擎 最新活动