自从换了阿里云服务器之后,我也就没有理过博客的回复评论邮件通知功能。前2天有朋友跟我说,之前评论都有邮件通知,现在怎么没有了。我想应该是没有开始支持mail()
函数的语言,VPS的好处就是自己可以随便折腾。于是研究下怎么开启mail()函数,本文做个记录,方便以后可能用到。
测试环境
运行环境 | LNMP |
系统 | CentOS 7.8 64位 |
我的阿里云服务器使用的是LNMP环境,CentOS 7.8 64位。
1.安装 sendmail 组件
yum 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
vi /usr/local/php/etc/php.ini
输入?sendmail_path 查找定位(或者手动跳转找到sendmail_path),你会发现默认是下面的代码
;sendmail_path =
按 i 进入编辑,将这行修改为
sendmail_path = /usr/sbin/sendmail -t –i
按 Esc 键退出编辑,输入 :wq 保存退出
5.重启php-fpm进程
/etc/init.d/php-fpm restart
这是一种有效的方法,你可以创建一个叫做mail.php的文件,你可以通过以下的程序来进行验证。
<?php
$txt = "hello,we are Eswink";
$mail = 'somebody@example.com';
// 发送邮件
mail($mail, "My Best Friend", $txt);
echo 'message has been sent!';
?>
保存并上传至你的网站根目录,并在浏览器运行:http://你的网址/mail.php
到时候你的邮箱里应该会收到邮件,不过大部分都是垃圾邮件,如果邮件没有收到,你就检查一下,看看有没有重启邮件或者重启 php。一般情况下,邮件都能正常收到。
当然,功能是可以实现的,但是用上面的测试代码测试,却发现发送邮件的速度非常慢,需要几十秒甚至一分钟。然后我写博客或者回复评论的速度非常慢,超过了用户心理上的等待时间。这个功能必须要优化,不然的话,这个功能就只能取消了。
网上方法很多很多,修改这个文件又是修改那个文件,感觉比较麻烦,于是找个了操作最少的修改,然后成功了。
修改/etc/hosts ,未修改之前
127.0.0.1 localhost.localdomain localhost
修改成
127.0.0.1 localhost.localdomain localhost 主机名称
查看本机的主机名称的命令是: hostname
完成修改之后重启下sendmail
service sendmail restart
完成以上步骤,发表评论的速度又恢复到了几秒。网友发表评论的速度相比之前加快了许多,同时不能收到评论回复的通知邮件的用户,请在文末下方留言。
本文参考了 LNMP笔记:解决mail函数不能发送邮件 文章内容。
ESWINK , 版权所有丨如未注明 , 均为原创
📮评论