前言:
最近我一直在测试主题,正在进行测试主题的工作。但是一个 SMTP 邮箱设置问题让我感到非常困扰,以至于无法集中精力。最后,我终于找到了问题的原因,而这个原因居然是如此简单。
具体问题情况
最近在查找主题 BUG 的时候,我发现了一个有趣的现象。就是关于 SMTP 邮箱设置的问题。评论回复有时候可以正常发送,有时候却没有任何审核提示。之前,我忘记了密码,结果通过邮箱找回时出现了以下错误:
可能原因:您的主机禁用了 mail()函数。
检测 mail 函数是否禁用
使用 PHP 探针来检测主机商是否禁用了 mail 函数的方法如下。将以下代码保存为 php 文件并上传到服务器,然后打开该文件即可进行测试:
// https://www.huizhanii.com
<!--?php
if (function_exists('mail')) {
echo "主机商支持 mail()函数!";
} else {
echo "主机商不支持 mail()函数!";
}
?-->
解决方案
原本以为腾讯云主机禁用了 mail()函数,但通过 PHP 探针发现并没有禁用。
下面是汇站提供的解决方案,适用于 mail 函数被禁用和支持 mail 函数的情况。亲身经历,希望能帮助到大家,避免再有人遇到类似问题。
主机禁用 mail 函数的解决方案:
如果通过上述 PHP 探针发现主机禁用了 mail 函数,可以直接使用 SMTP 发送邮件来替代原来的 mail 函数。
以下是汇站使用的 SMTP 邮箱设置代码,将其添加到functions.php文件中即可。
// https://www.huizhanii.com
function mail_smtp( $phpmailer ){
$phpmailer->From = "972908224@qq.com"; //发件人
$phpmailer->FromName = "汇站网"; //发件人昵称
$phpmailer->Host = "smtp.qq.com"; //SMTP 服务器地址
$phpmailer->Port = 465; //SMTP 端口,常用的有 25、465、587,具体谷歌百度
$phpmailer->SMTPSecure = ""; //SMTP 加密方式,常用的有 SSL/TLS,具体谷歌百度
$phpmailer->Username = "xxxxxx"; //邮箱帐号
$phpmailer->Password = ***********; //邮箱密码
$phpmailer->IsSMTP(); //使用 SMTP 发送
$phpmailer->SMTPAuth = true; //启用 SMTPAuth 服务
}
add_action('phpmailer_init','mail_smtp');
主机支持 mail 函数解决方案
如果测试支持 mail 函数往下看:
之前只有测试管理员的邮箱,后来我试着注册新用户,使用邮箱找回密码的功能,结果邮件正常发送,毫无意外。
接着,我更换 SMTP 邮箱账户为 163 邮箱,重新用管理员邮箱找回密码,结果也是正常接收,毫无意外。
终于,我发现了一个意外的问题,原来收件邮箱和发件邮箱不能相同。这个问题出现在一个小环节上,让我以为是主题问题,我改了好几次代码,但最终修复了一个重大 BUG。折腾啊,年轻就是要折腾。
不过话说回来,自从更换了 163 邮箱后,163 邮箱里就收到一大堆的审核、评论回复和注册的邮件提醒,真的很烦人。于是我决定单独设置一个管理员邮箱作为发件邮箱,这样就可以有效减少接收的邮件,现在终于清静了。
转载请注明:汇站网 » 解决 WordPress 发送邮件提示“您的主机禁用了 Mail 函数”的方法