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

PHPMailer本地发信正常 线上连接smtp.trol.pl报SSL协议不支持错误求助

故障原因及解决方案

根本原因

报错核心信息error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol指向TLS协议版本不兼容:

  • 线上服务器的PHP 7.4配套的OpenSSL版本默认禁用了已被废弃的TLS 1.0、TLS 1.1协议,最低仅支持TLS 1.2及以上版本
  • 目标邮箱服务商smtp.trol.pl的465 SSL端口仍在使用旧版本TLS协议,握手时无法匹配到双方都支持的协议版本,导致连接失败
  • 本地环境正常是因为本地OpenSSL配置未禁用旧协议,Gmail SMTP正常是因为Gmail服务端已适配高版本TLS协议,和PHPMailer本身无关

可尝试的解决方法

方法1:修改SMTPOptions配置,允许使用旧版本TLS协议

在现有代码的SMTPOptions的ssl数组中新增SSL版本指定参数,代码修改后如下:

$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true,
        // 新增以下行,允许客户端使用TLS1.0/1.1/1.2版本发起连接
        'ssl_version' => STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT | STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
    )
);

方法2:切换为STARTTLS端口连接

联系邮箱服务商确认是否支持587端口的STARTTLS连接,修改对应配置参数:

$mail->Port = 587;
$mail->SMTPSecure = 'tls';

多数服务商的587端口会适配更高版本的TLS协议,可避开465端口的旧协议问题。

方法3:升级PHPMailer版本

当前使用的PHPMailer 5.2.27是已停止维护的老旧版本,升级到PHPMailer 6.x版本可获得更好的SSL协议适配能力,升级时注意适配新版本的API规则(如新增命名空间引入、方法名大小写调整等)。

方法4:要求邮箱服务商升级服务端TLS配置

TLS 1.0、TLS 1.1协议已在2021年被正式废弃,所有主流操作系统、运行环境默认都会禁用这两个协议,服务商不升级服务端配置的话,后续会有更多客户端无法连接其SMTP服务,该问题本质是服务商服务端配置落后导致。

验证方案

可在线上服务器命令行执行以下命令验证SMTP服务端支持的TLS版本:

  • 测试TLS1.0连接:openssl s_client -connect smtp.trol.pl:465 -tls1
  • 测试TLS1.1连接:openssl s_client -connect smtp.trol.pl:465 -tls1_1
  • 测试TLS1.2连接:openssl s_client -connect smtp.trol.pl:465 -tls1_2
    如果只有TLS1.0/1.1能连接成功,即可确认是服务端协议版本过低导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:27:01