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

PHPMailer无法发送邮件:证书验证失败问题排查求助

PHPMailer无法发送邮件的排查方案

核心问题定位

从报错信息来看,根本原因是SSL证书验证失败,导致STARTTLS握手环节出错,最终无法建立SMTP连接。以下是针对性的排查和解决步骤:

1. 检查部署主机的CA根证书完整性

很多Linux主机默认未安装完整的CA根证书包,或证书已过期,这会导致无法验证SMTP服务器的证书:

  • Debian/Ubuntu系统执行:
    apt-get update && apt-get install ca-certificates
  • RHEL/CentOS系统执行:
    yum install ca-certificates && update-ca-trust
    安装完成后重启PHP服务,再尝试发送邮件。

2. 直接验证SMTP服务器证书有效性

在部署主机上用OpenSSL命令测试SMTP服务器的证书状态:
openssl s_client -connect smtp.yourserver.com:587 -starttls smtp
(将smtp.yourserver.com替换为实际SMTP地址,端口根据配置调整,比如465对应SSL加密)
查看输出中的证书信息,确认证书是否过期、域名是否与SMTP地址匹配。如果证书本身存在问题,需联系邮件服务提供商修复。

3. 临时禁用证书验证(仅用于测试,禁止生产环境使用)

在PHPMailer代码中添加以下配置,跳过证书验证,测试是否能正常发送:

$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);

如果此方法能成功发送邮件,说明问题确实出在证书验证环节,需回到步骤1、2彻底解决,不要长期使用该配置(存在安全风险)。

4. 排查主机网络限制

  • 用telnet测试部署主机能否访问SMTP服务器的对应端口:
    telnet smtp.yourserver.com 587
    若连接失败,可能是主机防火墙、服务商安全组拦截了出站端口,需开放对应端口。
  • 检查DNS解析是否正常:
    nslookup smtp.yourserver.com
    确认能正确解析到SMTP服务器的IP地址。

5. 核对PHPMailer的SMTP配置

确保SMTP服务器地址、端口、加密方式(STARTTLS对应587,SSL对应465)与其他正常运行的主机配置完全一致。同时检查SMTPAuth是否开启,用户名、密码是否正确——部分邮件服务商要求使用应用专用密码,而非邮箱登录密码。

报错信息中文翻译:
2022-11-25 10:18:16 客户端 -> 服务器: EHLO olbud.com.pl
2022-11-25 10:18:16 客户端 -> 服务器: STARTTLS SMTP错误: 无法连接到SMTP主机。连接失败。stream_socket_enable_crypto(): SSL操作失败,错误码1。OpenSSL错误信息:error:1416F086:SSL routines:tls_process_server_certificate:证书验证失败
2022-11-25 10:18:16 客户端 -> 服务器: QUIT
2022-11-25 10:18:16 SMTP connect() 失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:40:32