You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 12:36:16