PHPMailer配置SMTP发送邮件遇SMTP Error: Could not authenticate错误求助
解决PHPMailer连接Gmail SMTP时的认证失败问题
问题描述
我正尝试通过main.php文件,根据HTML页面提供的邮箱地址发送邮件,但始终遇到相同错误:SMTP Error: Could not authenticate。我知道这是常见错误,但已查阅大量网站及PHPMailer官方文档,仍未找到有效解决方法。
以下是我的PHP文件代码:
try{ $mail= new PHPMailer(true); $mail->SMTPDebug = SMTP::DEBUG_SERVER; $mail->IsSMTP(); $mail->SMTPDebug = false; $mail->SMTPAuth = true; $mail->SMTPSecure = 'ssl'; $mail->Host = 'smtp.gmail.com'; $mail->Port = 465; $mail->Username = 'example1@gmail.com'; $mail->Password = '4488abcd2266'; $mail->SetFrom('t25307469@gmail.com'); $mail->addAddress('example@gmail.com'); $mail->Subject=("Assunto"); $mail->msgHTML("Sua mensagem"); if ($mail->send()){ $ok = true; echo 'it worked'; }else{ $ok = false; echo 'didn\'t work'; }
实用解决步骤
1. 核对账号基础信息
- 确认
Username对应的Gmail账号拼写无误,密码没有输入错误 - 若账号开启了两步验证,绝对不能用原密码登录SMTP,必须用应用专用密码
2. 生成应用专用密码(针对两步验证账号)
- 登录Google账号,进入「安全」设置页
- 找到「应用专用密码」选项(需先开启两步验证才会显示)
- 生成一个用于邮件应用的专用密码,替换代码里的
Password字段
3. 临时开启低安全应用访问(仅旧账号可用,不推荐长期使用)
- 若未开启两步验证,可尝试在Google账号安全设置中开启「不太安全的应用访问」(Google已逐步取消该选项,仅部分老账号支持)
4. 修正PHPMailer配置细节
- 代码里重复设置了
SMTPDebug,建议保留SMTP::DEBUG_SERVER,方便查看详细错误日志 SetFrom的邮箱尽量和Username保持一致,避免触发Gmail的反垃圾校验- 确认服务器支持SSL连接,端口465是Gmail SSL协议的正确端口
5. 排查服务器环境限制
- 检查服务器是否允许出站连接到465端口,部分主机商会限制SMTP类端口
- 确认PHP已安装
openssl扩展,SSL连接依赖该扩展才能正常工作
内容的提问来源于stack exchange,提问作者joao vitor
相关产品推荐
相关产品推荐

