跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

宝塔面板网站无法发邮件怎么办_检查PHP函数与SMTP配置

宝塔默认禁用PHP的mail()函数,需手动删除禁用列表中的mail并确认sendmail_path配置有效、重启PHP服务;SMTP插件失效常因防火墙封端口、缺openssl/sockets扩展或未用邮箱授权码;邮件被拒收多因缺少SPF/DKIM/DMARC记录、使用免费域名或未配PTR反向解析。 PHP 的
mail()
函数根本没启用 宝塔默认禁用
mail()
,不是配置错,是压根没开。很多用户反复检查 SMTP 设置却忽略这点,导致死循环排查。 实操建议: 立即学习 “ PHP免费学习笔记(深入) ”; 进宝塔 → 网站 → PHP 设置 → 禁用函数列表,删掉
mail
确认
sendmail_path
在 PHP 配置里没被注释或设为空(宝塔界面“配置文件”里搜这一行) 重启 PHP 服务(不是重启面板或服务器) 写个测试脚本:
返回
true
才算过关 WordPress 或 Typecho 用 SMTP 插件但收不到信 插件只负责调用 PHPMailer,底层仍依赖 PHP 的网络能力。常见错误是宝塔防火墙或服务器安全组拦了 SMTP 端口,或者 PHP 没装
openssl
扩展。 实操建议: 立即学习 “ PHP免费学习笔记(深入) ”; 检查 PHP 扩展是否启用了
openssl
和
sockets
(宝塔 → PHP 设置 → 安装扩展) 用
telnet smtp.qq.com 465
测试端口连通性(如提示 command not found,先
yum install telnet
或
apt install telnet
) QQ 邮箱/163 邮箱必须用授权码,不是登录密码;Gmail 要开启两步验证再生成 App Password 插件里 SMTP 主机填
smtp.qq.com
,端口选
465
(SSL)或
587
(TLS),别混用 宝塔自带的邮件推送(如登录通知)失败 这是宝塔后端自己的 Python 脚本发信,和网站 PHP 无关。它走的是系统级
sendmail
或直接 SMTP,但默认没配,也不会报明显错误。 PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 实操建议: 立即学习 “ PHP免费学习笔记(深入) ”; 进宝塔 → 设置 → 邮件配置,类型选“SMTP”,填对邮箱、授权码、主机和端口 测试按钮经常卡住或无响应?手动执行命令看报错:
/www/server/panel/pyenv/bin/python /www/server/panel/class/mail_main.py send_test
如果提示
Connection refused
,大概率是服务商屏蔽了 25 端口,必须换 465/587 阿里云/腾讯云新购服务器默认封 25 端口,且不开放解封,别在这上面浪费时间 发信延迟高或被当垃圾邮件 不是程序问题,是发信身份不被信任。没有 SPF、DKIM、DMARC 记录,又用免费域名或动态 IP,Gmail/QQ 邮箱会直接扔进垃圾箱或排队数小时。 实操建议: 立即学习 “ PHP免费学习笔记(深入) ”; 用真实域名(别用
xxx.123.com
这类免费二级域),并配好 DNS:SPF 记录(
v=spf1 a mx include:smtp.exmail.qq.com ~all
)、DKIM(宝塔邮件插件或 QQ 邮箱后台可生成) 检查服务器反向解析(PTR 记录)是否指向你的域名,云厂商控制台一般能设置 避免用
admin@xxx.com
发信,改用
no-reply@xxx.com
或
support@xxx.com
,降低被标记风险 首次发信别群发,先单发给自己,等几封正常抵达后再逐步加量 真正卡住的地方,往往不在代码里,而在 DNS 记录、云厂商端口策略、邮箱服务商的黑盒规则上。调完 PHP 和 SMTP,记得抬头看一眼域名和服务器本身的“信用分”。

相关文章