LECMS邮件发送失败如何排查

域名注册
域名注册 正式会员超兽战士 👑年卡会员
发布于 2026-10-08 13:33 ·1 浏览 ·0 回复

照着这篇排查一遍,你基本能自己定位 LECMS 邮件发不出去的真正原因,而不是反复改后台密码试运气。

LECMS 发邮件走的是 SMTP,链路是「后台配置 → PHP 的 PHPMailer 组件 → 服务器网络 → 收件方服务器」。这条链上任何一环断了都会表现成同一句话:“发送失败”。所以排查思路是从后端往前端倒着查,先拿到真实报错,再逐段验证。

第一步:先拿到真实报错信息,别猜

这一步的目标是把“发送失败”换成一句具体的技术报错,比如 SMTP connect() failed 或 Could not authenticate。

进入 LECMS 后台 → 系统 → 系统设置 → 邮件设置,把配置填好后点「发送测试邮件」。如果只弹一个笼统的失败提示,就去服务器上找日志:

  • LECMS 的运行日志一般在 runtime/log/ 目录下(按日期分文件),搜关键字 mail、smtp、PHPMailer。
  • 如果 runtime 目录下没有,检查 config/ 或 application/ 下的邮件配置文件是否开启了调试开关,把 debug 设为 true 再测一次。

注意:ThinkPHP 系的老版本 LECMS 默认把异常吞掉只返回 false,不开 debug 你永远看不到原因。测完记得关掉。

第二步:逐项核对后台邮件参数

这一步是把配置错误排除掉,80% 的失败都出在这里。后台「邮件设置」里通常有这几项,对照你的邮箱服务商官方文档逐字核对:

参数常见正确值
SMTP 服务器smtp.qq.com / smtp.163.com / smtp.exmail.qq.com
端口465(SSL)或 587(TLS)
加密方式SSL 对应 465,TLS 对应 587,别混搭
发件邮箱必须和 SMTP 账号完全一致
密码企业邮/QQ邮箱这里是「授权码」,不是登录密码
发件人名称任意中文即可,但别含特殊符号

注意:腾讯、网易系邮箱必须先在网页版邮箱 → 设置 → 账户 里开启「SMTP 服务」,系统会给你一串 16 位授权码,用登录密码必然认证失败。

第三步:直接在服务器上测 SMTP 通不通

这一步用来区分「是 LECMS 的问题」还是「服务器网络的问题」。SSH 登录服务器执行:


openssl s_client -connect smtp.qq.com:465 -crlf

# 测 587 端口
telnet smtp.qq.com 587

能连上会返回 220 开头的欢迎语;卡住不动或提示 Connection refused / Connection timed out,说明网络层就断了,跟 LECMS 无关,看第四步。

第四步:处理端口封锁和 PHP 环境限制

这一步解决「服务器连不上 SMTP」的两种情况。

情况一:25 端口被封。 阿里云、腾讯云等厂商默认封禁出方向 25 端口,防垃圾邮件。所以后台端口千万别填 25,改用 465 或 587。

情况二:PHP 缺扩展或被禁用函数。 执行 php -m | grep -i openssl,如果没有输出,说明 openssl 扩展没装,SSL 加密根本走不通。宝塔面板的话,进「软件商店 → PHP 7.x → 设置 → 安装扩展」勾选 openssl 安装即可。

再检查 php.ini 里的 disable_functions,如果里面列了 fsockopen、stream_socket_client、curl_exec,把它们删掉再重启 PHP。

第五步:确认邮件是不是其实发出去了

这一步排除「发送成功但没收到」的假失败。用一个 Gmail 或 QQ 邮箱收件,然后:

  1. 看垃圾邮件文件夹。自建域名发信没有 SPF 记录,几乎必进垃圾箱。
  2. 去发件邮箱的「已发送」里看有没有记录。有记录 = LECMS 发送成功,问题在收件方或域名信誉,去 DNS 加一条 SPF 记录:v=spf1 include:spf.mail.qq.com ~all。
  3. 如果连已发送都没有,回到第三步继续查。

注意:测试时不要用同一个邮箱给自己发,容易被判定为自环邮件丢弃;也不要短时间内连发十几封,QQ 邮箱会临时限制 IP。

第六步:检查业务逻辑层面的触发条件

如果测试邮件能发、注册验证码发不出,问题在业务代码。检查后台「用户设置」里验证码邮件开关是否开启、是否设置了发送频率限制(如 60 秒一次),以及收件人邮箱格式有没有多空格或全角字符。

小结

  • 先开 debug 拿到真实报错,别对着「发送失败」四个字瞎改。
  • 后台四项必查:服务器地址、端口与加密方式匹配、发件邮箱=SMTP 账号、密码用授权码。
  • 用 openssl s_client 和 telnet 判断是 LECMS 问题还是服务器网络问题。
  • 云服务器基本都封 25 端口,一律改用 465/587。
  • PHP 的 openssl 扩展没装,SSL 加密必然失败。
  • 测试邮件能发但收不到,优先查垃圾箱和 SPF 记录,不是 LECMS 的锅。
版权声明:本文来自 GJ站长论坛《LECMS邮件发送失败如何排查》
原文链接:https://www.gj0.com/thread-982.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~