PHPMailer连接smtp.gmail.com失败问题求助
解决PHPMailer连接Gmail SMTP超时(错误10060)的方案
核心问题定位
你的错误提示是SMTP连接超时(SMTP code:10060),主要原因是SMTP端口与加密配置不匹配,或网络/环境限制导致无法连接Gmail服务器。
分步解决方案
1. 修正SMTP端口与加密设置
Gmail的SMTP端口和加密有明确对应关系,你的代码中SMTPSecure='tls'却使用Port=25,这是错误配置(25端口多被ISP封禁,Gmail官方推荐使用587或465端口):
- TLS加密(STARTTLS)对应端口587
- SSL加密对应端口465
修改代码中的服务器配置段:
//Server settings $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'example@gmail.com'; $mail->Password = '你的应用密码'; // 推荐方案:使用STARTTLS+587 $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; $mail->Port = 587; // 备选方案:使用SSL+465 // $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // $mail->Port = 465;
2. 验证PHP OpenSSL扩展启用
加密连接依赖OpenSSL扩展,检查php.ini文件,确保以下行未被注释:
extension=openssl
修改后重启PHP服务(如Apache/Nginx或PHP-FPM)。
3. 测试网络连通性
在服务器/本地终端执行以下命令,测试是否能连接Gmail SMTP服务器:
# 测试587端口连通性 telnet smtp.gmail.com 587 # 或使用nc命令 nc -zv smtp.gmail.com 587
如果无法连接,说明:
- 本地/服务器防火墙封禁了587/465端口,需在防火墙规则中放行
- 你的ISP封禁了SMTP端口,可尝试更换网络(如手机热点)测试,或联系ISP解除限制
4. 确认Gmail账号配置
- 必须开启两步验证才能生成有效的应用密码(未开启两步验证则无法使用应用密码功能)
- 确保应用密码是针对"其他(自定义名称)"生成的,输入时无空格或拼写错误
- 检查Gmail账号是否有异常登录记录,避免账号被临时限制
5. 开启SMTP调试排查细节
在代码中添加调试模式,获取详细连接日志,帮助定位深层问题:
// 在Server settings段添加 $mail->SMTPDebug = SMTP::DEBUG_SERVER; // 输出完整SMTP交互日志
执行脚本后,根据日志信息进一步排查(如握手失败、认证错误等)。
内容的提问来源于stack exchange,提问作者Luqman Amiruddin
相关产品推荐
相关产品推荐

