使用Gmail SMTP调用wp_mail()发送邮件失败:低安全应用访问已停用
解决WordPress本地环境使用Gmail SMTP发送邮件失败的问题
核心排查与修复步骤
1. 补全SMTP配置生效代码(最常见遗漏点)
你仅定义了SMTP常量,但WordPress默认不会自动读取这些常量来配置邮件发送逻辑,需要添加钩子让wp_mail切换为SMTP模式:
将以下代码添加到主题functions.php或自定义插件中:
add_action( 'phpmailer_init', 'setup_custom_smtp' ); function setup_custom_smtp( $phpmailer ) { $phpmailer->isSMTP(); $phpmailer->Host = SMTP_HOST; $phpmailer->SMTPAuth = SMTP_AUTH; $phpmailer->Port = SMTP_PORT; $phpmailer->Username = SMTP_USER; $phpmailer->Password = SMTP_PASS; $phpmailer->SMTPSecure = SMTP_SECURE; $phpmailer->From = SMTP_FROM; $phpmailer->FromName = SMTP_NAME; }
2. 验证应用密码有效性
- 确保生成的是邮件专用应用密码:在谷歌账号的「应用密码」界面,选择「邮件」+「其他」设备类型生成
- 确认
SMTP_PASS填写的是完整16位应用密码,无空格或多余字符
3. 排查本地环境网络限制
- 临时关闭防火墙/杀毒软件,测试587端口是否被拦截
- 若TLS连接失败,可尝试将
SMTP_SECURE改为'ssl'、端口改为465(优先推荐587+TLS) - 本地环境缺少SSL证书导致验证失败时,可在
setup_custom_smtp函数中临时添加以下代码(仅本地测试用,生产环境禁用):
$phpmailer->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) );
4. 调试邮件发送错误
修改你的发送函数,添加错误捕获查看具体原因:
static function _sendEmail(){ $sendto = "sutrisnohendra08@gmail.com"; $sendfrom = 'hendratrisno08@gmail.com'; $headers = array("Content-type:text/html; charset=UTF-8","From: Me Myself <". $sendfrom . ">"); $sendsub = 'Thank you for Subscribe!'; $sendmess = 'Hello, Thank You!'; // 调试代码 $result = wp_mail($sendto, $sendsub, $sendmess, $headers); if (!$result) { global $phpmailer; var_dump($phpmailer->ErrorInfo); // 输出具体错误信息 } }
5. 确认谷歌账号状态
- 确保账号已开启两步验证(未开启无法生成应用密码)
- 检查账号是否有异常登录记录,若有需解锁账号后再测试
内容的提问来源于stack exchange,提问作者Hendra
相关产品推荐
相关产品推荐

