博主之前把一个博客站点搬家,搬家完成以后发现邮件功能失效了!折腾了一整天,找遍了百度,谷歌,360,尝试了无数种办法,仍然没有解决问题,最终终于找到了解决办法。
博主这里的服务器是linux 系统 ,大部分原因是因为主机不支持mail函数那我们需要检查主机是否支持方法如下:
mail函数未安装
网上绝大多数的人认为,是LINUX系统没有安装mail函数,导致无法发送邮件。那么先测试 主机是否支持:
使用一个PHP文件来发邮件
在本地新建一个PHP文件取名为mail.php 内容代码如下
<?php
$txt = "hello";
// 以下的邮箱地址改成你的
$mail = "somebody@example.com";
// 发送邮件
mail($mail, "My subject", $txt);
echo "message was sent!";
?>
上传到网站根目录,访问下这个文件,他就会自动发送测试邮件到你指定的邮箱。
如果不支持,那咱们就安装下sendmail组件
yum install sendmail
安装完后重启下php-fpm进程
/etc/init.d/php-fpm restart
来检查下sendmail是否正常运行
/etc/init.d/sendmail status
如果显示正常运行说明已经安装成功了
相关命令 一定要收藏啊,太重要了
/etc/init.d/sendmail start (启动sendmail)/etc/init.d/sendmail stop (关闭sendmail)/etc/init.d/sendmail restart (重启sendmail)
如果报错,那么就先卸载sendmail
先停止sendmail服务
/etc/init.d/sendmail stop
取消开机自动启动
chkconfig --levels 345 off sendmail
彻底卸载sendmail
yum remove sendmail
建议重新启动下VPS,然后再次安装sendmail,有人说装好sendmail 邮件组件后,也要重启下VPS。
小谢完全按照要求做了,sendmail运行正常,但是WordPress还是无法发送邮件,见鬼了
sendmail设置绝对路径
有人说需要给sendmail设置绝对路径,我打开?/usr/local/php/etc/php.ini 找到了sendmail_path把他修改成
sendmail_path = /usr/sbin/sendmail -t –i
别忘了去掉前面的“;”
重启php-fpm进程
/etc/init.d/php-fpm restart
我照做了,但结果还是失败。
禁用SELinux
SELinux根本就没有可用的价值,就相当于windows7中的操作中心。有人说是SELinux 阻止了 http 守护进程发送电子邮件,于是我找到了/etc/sysconfig/selinux 配置文件,发现他默认就是?disabled
好吧,问题根本就没有解决
收件箱问题
经过以上的折腾,仍然无法收到邮件,那很有可能是收件箱的问题了。我用QQ邮箱作为收件箱怎么也收不到,用gmail作为收件箱问题就解决了。可能原因是我用的是美国VPS的关系吧,以前SJY之家放在国内虚拟主机上,QQ邮箱收件就没有问题。
插件实现WordPress邮件功能
使用了插件?Configure SMTP
使用这个插件建议使用谷歌邮箱作为发件箱,他默认有谷歌邮箱配置,第一次发送应该不会成功,需要登录下谷歌邮箱,会提示阻止了什么什么的,点进去一路YES,就OK了。
如果没有提示,请关闭浏览器,然后重新打开浏览器并登录邮箱,看头部是否有红色条形的提示。
总结:
其实收不到邮件的最根本的原因就是因为主机不支持 mail函数,解决这个问题基本就成功了。有问题大家留言,我会一个一个解决。