具体问题情况
最近在查找主题BUG的时候发现一个很有趣的现象,就是 SMTP 邮箱设置的问题,评论回复是可以是可以不正常发送的,但是却没有任何审核的提示,之前忘记过一次密码,结果通过邮箱找回出现如下错误:
无法发送电子邮件。
可能原因:您的主机禁用了mail()函数。
检测mail函数是否禁用
使用PHP探针来检测主机商是否禁用了mail函数。
PHP探针代码如下,保存为php文件上传到服务器打开就可以测试出来:
<?php
if (function_exists('mail')) {
echo "支持mail()函数!";
} else
echo "不支持mail()函数!";
?>
解决方案
本来以为是主机禁用了mail()函数,但是通过PHP探针发现,并没有禁用。
下面提供禁用和支持mail函数都出现mail函数被禁用的解决方案给大家。
主机禁用mail函数解决方案
通过上面的PHP探针,如果发现主机禁用了mail函数则直接使用SMTP发送邮件来代替原来的mail函数
在这里送上使用的SMTP邮箱设置代码(示例为QQ邮箱设置),丢进 functions.php 就行了。
function mail_smtp( $phpmailer ){
$phpmailer->From = "admin@miliol.com"; //发件人
$phpmailer->FromName = "米粒在线"; //发件人昵称
$phpmailer->Host = "smtp.qq.com"; //SMTP服务器地址
$phpmailer->Port = 25; //SMTP端口,常用的有25、465、587,具体谷歌百度
$phpmailer->SMTPSecure = ""; //SMTP加密方式,常用的有SSL/TLS,具体谷歌百度
$phpmailer->Username = "admin@miliol.com"; //邮箱帐号
$phpmailer->Password = ******; //邮箱密码
$phpmailer->IsSMTP(); //使用SMTP发送
$phpmailer->SMTPAuth = true; //启用SMTPAuth服务
}
add_action('phpmailer_init','mail_smtp');
1F
wordpress无法发送邮件解决方法及设置
为了防止垃圾邮件,禁止了系统的sendmail功能,wordpress用户只需要安装一个官方的smtp插件即可使用外接的邮件服务器来发信.
如果不设置这个,游客或其他用户发表评论是可能会需要等待非常长的时间才能发出评论或出现脚本错误.
插件地址:wordpress.org/extend/plugins/wp-mail-smtp/
安装好后先到后台plugins里去激活(Activate)WP-Mail-SMTP插件,然后后台左下方的设置(settings)里会出现email设置选项,
以gmail为例:
From Email:你的gmail地址
From Name:发信人姓名,随便填
Mailer:Send all WordPress emails via SMTP.
SMTP Host:smtp.gmail.com
SMTP Port:465
Encryption:Use SSL encryption.
Authentication:Yes: Use SMTP authenticati
Username:你的gmail用户名(企业版用户请填写邮件地址)
Password:你的gmail密码
QQMAIL的设置
接收邮件服务器:pop.qq.com,使用SSL,端口号995
发送邮件服务器:smtp.qq.com,使用SSL,端口号25
账户名:您的QQ邮箱账户名(如果您是VIP帐号或Foxmail帐号,账户名需要填写完整的邮件地址)
密码:您的QQ邮箱密码
电子邮件地址:您的QQ邮箱的完整邮件地址