cPanel服务器Laravel Gmail SMTP超时与SSL错误求助(本地正常)
Laravel在cPanel服务器使用Gmail SMTP发送邮件的超时与SSL证书问题
在cPanel服务器上通过Laravel的Mail门面使用Gmail SMTP发送邮件时,本地配置正常,但服务器端出现两类问题:
- 连接Gmail SMTP服务器时触发超时错误
- SSL证书验证失败
已确认基础连通性正常(端口测试71ms建立连接、OpenSSL TLS协商成功、服务器可访问Gmail SMTP服务器),并尝试过以下配置方案,但问题仍未解决:
- 切换SSL(465)与TLS(587)端口
- 调整加密方式(SSL/TLS)
- 修改各类SSL验证设置
- 更换SMTP主机(smtp.gmail.com与smtp-relay.gmail.com)
- 调整超时值
- 尝试不同认证模式
环境信息
- Laravel版本:11.34.2
- PHP版本:8.2.25
- 服务器:cPanel
- 邮件服务:Gmail SMTP
本地可用配置
'smtp' => [ 'transport' => 'smtp', 'url' => null, 'host' => 'smtp.gmail.com', 'port' => 587, 'encryption' => 'tsl', 'username' => 'myemail@gmail.com', 'password' => "app-password", 'timeout' => null, ],
错误1 - 超时
错误信息
Error sending: SMTP Error: Could not connect to SMTP host.
使用的配置
'smtp' => [ 'transport' => 'smtp', 'host' => 'smtp.gmail.com', 'port' => 465, 'encryption' => 'ssl', 'username' => 'myemail@gmail.com', 'password' => 'app-password', 'timeout' => 5, 'stream_options' => [ 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ] ] ],
错误2 - SSL证书验证失败
错误信息
Error sending: SMTP Error: Could not connect to SMTP host. Connection failed. stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
使用的配置
'smtp' => [ 'transport' => 'smtp', 'host' => 'smtp-relay.gmail.com', 'port' => 587, 'encryption' => 'tls', 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'timeout' => 5, 'auth_mode' => 'PLAIN', 'stream_options' => [ 'tcp' => [ 'tcp_nodelay' => true, ], 'ssl' => [ 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, 'SNI_enabled' => true, ] ] ],
已执行的验证操作
- 端口测试连接成功:
$ time nc -zv -w 5 smtp.gmail.com 465 Connection to smtp.gmail.com 465 port [tcp/submissions] succeeded! real 0m0.071s
- OpenSSL测试TLS协商成功:
$ openssl s_client -connect smtp.gmail.com:465 ... New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384 ... 220-smtp.gmail.com ESMTP ready
- 验证Exim设置:
$ sudo exim -bP accept_8bitmime accept_8bitmime $ sudo exim -bP smtp_accept_max_nonmail smtp_accept_max_nonmail = 10
- 尝试过SSL(465)与TLS(587)端口
- 调整过不同超时值
- 验证过Gmail应用密码与2FA设置
- 添加过各类SSL/TLS配置与证书验证设置
- 尝试使用smtp-relay.gmail.com
连接测试均成功,但Laravel邮件发送器持续超时。快速的netcat连接(71ms)表明问题可能出在SSL握手或SMTP认证阶段,目前尚未解决。
内容的提问来源于stack exchange,提问作者Helia Haghighi
相关产品推荐
相关产品推荐

