解决wordpress 提示“wordpress 您的主机禁用了mail()函数”

wordpress 提示“wordpress 您的主机禁用了mail()函数”
参考:http://www.cmhello.com/lnmp-mail-function-doesnt-work.html

系统是ubuntu14.04
1.安装sendmail
apt-get install sendmail

2.使用下面的命令重启php-fpm进程
/etc/init.d/php-fpm restart

3.检测sendmail是否运行正常
/etc/init.d/sendmail status

如果显示正在运行running 就可以。

可能用到的命令:
/etc/init.d/sendmail start (启动sendmail)

/etc/init.d/sendmail stop (关闭sendmail)

/etc/init.d/sendmail restart (重启sendmail)

4.配置php.ini,填写sendmail的绝对路径

使用命令打开编辑php.ini
vim /usr/local/php/etc/php.ini

输入?sendmail_path 查找定位(或者手动跳转找到sendmail_path),你会发现默认是下面的代码
;sendmail_path =

按 a 进入编辑,将这行修改为
sendmail_path = /usr/sbin/sendmail -t -i

按 Esc 键退出编辑,输入 :wq 保存退出

5.重启php-fpm进程
/etc/init.d/php-fpm restart
6.mail服务的工作不正常需要看/var/log/mail.err以及 /var/log/mail.log
BUG描述:‘sendmail: unable to qualify my own domain name’。

这主要是由于sendmail发送需要检查/etc/hosts文件,如果没有发现包含‘.’的 domainname就会报该条信息.

这时我们可以检查/etc/hosts文件,将看到如下

127.0.0.1 localhost
xx.xx.xx.xx xxx xxx

只需要将第2行末尾加上含有‘.’的后缀。

xx.xx.xx.xx xxx xxx yyy.com

这样问题就解决了。

 

转自:http://www.xp-sem.com/wordpress-send-mail-of-php/

另外WordPress发送邮件的原理很简单,它是通过PHP中的mail()函数来实现的,所以我们首先要解决的就是测试服务器对mail()函数的支持情况,小拼提供三种解决方案,随你喜欢。

1)新建一个PHP文件,命名为mail_test.php,加入以下代码:

<?php phpinfo(); ?>

将mail_test.php上传至网站根目录,访问该文件,就可以看到你的服务器PHP详细配置信息了,其中的sendmail_path组件,如果值是-t -i,则说明你的服务器支持mail()函数。

2)在上面的mail_test.php文件中,加入以下代码:

<?php
$text = "This is a test!";
// 将邮箱地址改成你的
$mail = 'xpsem2010@gmail.com'; 
// 发送邮件
mail($mail, "Mail Test", $text);
echo "Message has been sent !";
?>

同上,访问mail_test.php文件,如果你的邮箱收到名为Mail Test的新邮件,那表示你的服务器是支持mail()函数发送邮件的。

3)在mail_test.php中加入如下代码:

<?php
if (function_exists('mail')) echo "^_^ mail()函数可以使用!";
else echo "- -! mail()函数不可以使用!";
?>

以上三种方法,就可以准确地测试出你的服务器对mail()函数的支持情况了。