PHPMailer提示用户名密码不被接受、SMTP连接失败问题求助
存在的配置问题
- 加密方式与端口不匹配
Gmail SMTP的规则是TLS加密对应587端口,SSL加密对应465端口,你最初用TLS加密配25端口本身就是错误配置,后续改465端口但没有同步把加密方式改成SSL,才会出现连接失败的报错。 - 不符合Gmail的第三方登录安全规则
谷歌已经全面停止了普通账号密码直接登录第三方SMTP服务的权限,哪怕你的账号密码完全正确,也会触发535验证失败的报错。
解决步骤
- 修正SMTP配置,二选一即可:
方案1(TLS加密):
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587;
方案2(SSL加密):
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465;
- 生成Gmail应用专用密码
先给你的谷歌账号开启两步验证,之后在账号安全设置中找到「应用专用密码」入口,生成一个16位的专用密码,将代码中$mail->Password的值替换为这个新生成的专用密码即可,不需要修改你原本的谷歌账号登录密码。 - 端口连通性检查
确认你的服务器没有封禁对应端口的出站请求,你可以在服务器上执行telnet smtp.gmail.com 587(如果用SSL就替换成465)测试连通性,如果连接失败需要联系服务器服务商放行对应端口的出站规则。
内容的提问来源于stack exchange,提问作者John Beasley
相关产品推荐
相关产品推荐

