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

使用PHPMailer发送邮件遇SMTP认证失败问题求助

解决PHPMailer连接Gmail SMTP的认证错误

看你遇到的SMTP ERROR: Password command failed: Please log in via your web browser错误,这是Gmail的安全机制在搞事情,加上你代码里还有个小拼写错误,咱们一步步来解决:

核心问题分析

Gmail默认会阻止非官方应用(比如PHPMailer)直接用账号密码登录SMTP服务器,尤其是当你没开启两步验证或者没生成专用应用密码的时候,就会触发这个“请通过浏览器登录”的提示。另外你代码里的拼写错误也会直接影响功能运行。

解决方案步骤

1. 修复代码里的拼写错误

你写的$mailer->isSTMP();是错的!正确写法是$mailer->isSMTP();(少了一个字母M),这个错误会导致PHPMailer无法切换到SMTP模式,自然没法连接Gmail的邮件服务器。

2. 配置Gmail的安全设置(关键!)

现在Gmail已经移除了“允许不太安全的应用”选项,必须通过两步验证+应用专用密码来登录:

  • 先给你的Gmail账号开启两步验证(2FA):在Google账号的安全设置里找到“两步验证”,按照提示完成绑定(比如绑定手机)。
  • 生成应用专用密码:开启2FA后,在安全设置里找到“应用专用密码”,选择“邮件”作为应用类型,“其他(自定义名称)”作为设备,生成一个16位的密码,这个密码就是你要在PHPMailer里填写的Password字段,不要用你的原Gmail密码!

3. 优化代码的其他细节

  • 开发环境下的SMTPOptions可以暂时保留,但生产环境建议删除这段配置(让它默认验证SSL证书,更安全)。
  • 生产环境记得把SMTPDebug改成0,避免输出敏感的调试信息。

修正后的完整代码

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<?php
require "vendor/autoload.php";
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

$developmentMode = true;
$mailer = new PHPMailer($developmentMode);

try {
    $mailer->SMTPDebug = 2;
    // 修复拼写错误:isSTMP -> isSMTP
    $mailer->isSMTP();

    if ($developmentMode) {
        $mailer->SMTPOptions = [
            'ssl' => [
                'verify_peer' => false,
                'verify_peer_name' => false,
                'allow_self_signed' => true
            ]
        ];
    }

    $mailer->Host = 'smtp.gmail.com';
    $mailer->SMTPAuth = true;
    $mailer->Username = "mygmail@gmail.com";
    // 替换成你生成的应用专用密码
    $mailer->Password = "你的16位应用专用密码";
    $mailer->SMTPSecure = 'tls';
    $mailer->Port = 587;

    $mailer->setFrom("mygmail@gmail.com", "Izaya");
    $mailer->addAddress("anothergmail@gmail.com","orihara");

    $mailer->isHTML(true);
    $mailer->Subject = "Hey There";
    $mailer->Body = "NICE TO MEET YOU IZAYA ";

    $mailer->send();
    $mailer->ClearAllRecipients();
    echo "Mail has been Sent";
} catch (Exception $e) {
    echo "Email Error.INFO:" . $mailer->ErrorInfo;
}
?>
</body>
</html>

额外检查点

  • 确认你的服务器能访问smtp.gmail.com的587端口,有些主机商会屏蔽这个端口,如果不行可以试试465端口(对应SMTPSecure = 'ssl')。
  • 如果还是有问题,去Google账号的“最近的安全活动”里看看有没有被拦截的登录请求,手动允许该设备的访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:03:08