以下步骤用于排查 WHMCS 8.0 及更高版本的邮件发送问题。若需排查 WHMCS 7.10 及更低版本的问题,请参阅WHMCS 7.10 及更低版本邮件发送问题排查。
若 WHMCS 安装无法发送邮件或邮件显示异常
-
进入 设定 > 系统日誌。
-
检查邮件发送时段的日誌,查看是否有错误信息。
常见邮件发送错误
查看日誌时,可能会遇到以下常见错误:
无法实例化邮件函数
此错误发生在“邮件供应商”设置中选择了“PHP Mail”作为邮件类型时。它表示尝试发送邮件时,邮件服务器拒绝了请求。
PHP Mail 函式使用伺服器的 函式,该函式并不可靠,且不会生成友好的错误信息。mail()
解决方法:
-
在 设定 > 系统设定 > 常规设定 的“邮件”标签页中,切换为其他邮件供应商(如 SMTP)。
-
其他邮件发送方式通常更可靠,且出现错误时能提供更详细的描述
。
替代方案(服务器端配置):
-
安装本地邮件伺服器(例如 Postfix)。
-
确保 文件中的 指向 二进制文件(通常为 )。
php.ini
sendmail_path
sendmail
/usr/sbin/sendmail
-
在 Ubuntu 或 Debian 伺服器上,可能需要在 或其他路径下配置多个 文件。
/etc/php5/mods-available
.ini
无法连接到 SMTP 主机
此错误可能由以下原因导致:
-
SMTP 设置错误:在 设定 > 系统设定 > 常规设定 的“邮件”标签页中,检查“邮件供应商”设置的 SMTP 参数(端口、主机、用户名、密码、SSL 类型)是否正确。请联系系统管理员确认。
-
端口与 SSL 类型不匹配:例如,选择“SSL”但端口为 25(常见端口规则:无 SSL 为 25/26;SSL 为 465/587;TLS 为 587)。
-
邮件服务器阻止连接:邮件服务器可能阻止了 WHMCS 主机的连接请求,或 WHMCS 主机阻止了向邮件服务器的出站连接。需联系服务器管理员或托管服务商解决。
身份验证失败
此错误表示邮件服务器拒绝了“邮件供应商”设置中的 SMTP 信息。
解决方法:
-
确认 设定 > 系统设定 > 常规设定 的“邮件”标签页中的 SMTP 信息(用户名、密码等)是否正确。
-
若使用 cPanel & WHM 伺服器,SMTP 限制可能自动将流量重定向到本地主机(WHMCS 所在伺服器)。需进入 WHM 的 主页 >> 安全中心 >> SMTP 限制 并禁用此选项。
-
若使用 Gmail,可能是邮箱账户的安全设置导致。更多信息请参阅Gmail 可疑访问阻止及应用访问权限。
发件人验证失败
此错误表示发送邮箱地址不存在于 SMTP 服务器中。
验证步骤:
-
登录 cPanel,进入 主页 >> 邮件 >> 邮件账户,记录当前邮件账户。
-
进入 WHMCS 的 设定 > 系统设定 > 常规设定,确认“电子邮件地址”与 cPanel 中记录的邮件账户一致。
语法错误
语法错误通常由邮件模板的无效代码导致。
排查方法:
-
日誌中会显示错误详情(如错误信息、模板中的行号及上下文代码)。
-
进入 设定 > 系统设定 > 邮件模板,选择对应的模板(例如“客户端注册邮件”模板)。
-
检查并修正模板中的语法错误(例如删除错误的 标签)。
{if}
-
-
点击 保存更改。
Smarty 错误:安全策略禁止
此错误表示邮件模板包含默认安全策略阻止的高级代码。
解决方法:
-
进入 设定 > 系统设定 > 邮件模板,查看模板代码,确认其尝试发送的内容。
-
在邮件安全策略中为该代码添加例外。更多信息请参阅Smarty 安全策略。
数据未被接受
此错误表示邮件服务器拒绝了邮件。可能原因包括:
-
邮件服务器不允许发件人与用户名不同:部分服务器要求“发件人邮箱”与“认证用户”一致。
-
检查 设定 > 系统设定 > 常规设定 的“邮件”标签页中的“SMTP 用户名”和“系统邮件发件人邮箱”是否一致。若不一致,联系邮件服务商确认是否允许。
-
-
邮件附件过大:尝试从邮件模板中移除附件(设定 > 系统设定 > 邮件模板)。若仅数据库备份邮件报错,可禁用“邮件备份”,改用 FTP 或 cPanel 备份。
-
收件人被列入黑名单或屏蔽:检查伺服器的垃圾邮件过滤设置。
-
邮件发送频率限制:若错误间歇性出现,可能是 SMTP 服务器触发了发送频率限制。等待几小时后再尝试,或联系邮件服务商提高发送限制。
配置导致邮件发送中止
在 WHMCS 8.1 中,此错误表示已在 设定 > 系统设定 > 常规设定 的“邮件”标签页中启用“禁用邮件发送”。 系统会在每次启用或禁用此设置时记录此错误。
建议:仅在测试更新或自定义开发环境时启用此设置。 更多信息请参阅禁用外发邮件。
SMTP connect() 失败
完整错误通常附带排查链接(如 PHPMailer 连接问题排查)。 可能原因包括:
-
DNS 解析失败:伺服器无法解析 SMTP 主机名。
-
防火墙阻止:防火墙规则阻止了与 SMTP 主机的连接。
-
远程 SMTP 禁用:伺服器配置可能禁止使用外部 SMTP 服务器。
-
SSL 证书配置错误:SMTP 服务器的主机名证书已过期。
排查方法:启用 SMTP 连接的详细输出,定位具体原因。
邮件无收件人
客户端可能通过“电子邮件通知偏好”退订了此类邮件。
解决方法:
-
确保用户在“客户端资料”标签页或联系人的“联系人”标签页中启用了对应邮件的通知权限。
-
示例:若尝试发送“产品欢迎邮件”失败,需检查“产品邮件”是否在“客户端资料”或“联系人”标签页中勾选。