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

PHPMailer连接Exchange 2010提示SSL: Success错误如何排查解决

可尝试的排查与解决方向

1. 强制指定TLS协商版本

PHP 5.6版本的openssl扩展默认的TLS协商逻辑和Exchange 2010存在适配问题,可在SMTPOptions配置中明确指定TLS版本解决:

$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true,
        // 优先指定TLS 1.2,测试不通过可替换为STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT、STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT
        'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
    )
);

2. 内网场景直接关闭STARTTLS加密

你使用内网IP连接Exchange 25端口,传输链路本身可信,可关闭TLS加密直接提交:

  • 新增配置$mail->SMTPAutoTLS = false;,禁止PHPMailer自动发起STARTTLS请求
  • 将$mail->SMTPSecure设置为空字符串
  • 配合修改Exchange接收连接器配置,取消「仅在启动TLS之后提供基本身份验证」的勾选

3. 检查Exchange接收连接器配置

登录Exchange 2010的Exchange管理控制台,定位到你配置的专用接收连接器,确认以下配置:

  • 身份验证标签页已勾选「基本身份验证」「传输层安全性(TLS)」
  • 权限组标签页已给对应发信账号所属权限组开放「提交邮件」权限
  • 接收连接器的远程IP范围包含你PHP服务的出口IP

4. 排查openssl扩展兼容性

输出phpinfo()查看当前openssl扩展版本,若版本低于1.0.1,升级openssl扩展后重试,老旧版本openssl和Exchange 2010的TLS握手存在已知兼容缺陷。

5. 降级PHPMailer版本

你当前使用的PHPMailer 6对PHP 5.6的边缘场景适配不足,可降级到PHPMailer 5.2稳定版本,该版本对老旧PHP环境和Exchange 2010的兼容性更好。

6. 命令行验证TLS握手状态

在PHP部署服务器上执行openssl命令直接测试握手状态,快速定位问题层级:

# 分别替换-tls1_2为-tls1_1、-tls1测试不同TLS版本
openssl s_client -connect 192.168.123.123:25 -starttls smtp -tls1_2

若所有版本均握手失败,优先排查内网防火墙、WAF等设备是否存在TLS拦截规则,若某个版本握手成功,对应在PHP配置中指定相同的TLS版本即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:18:02