自从换了阿里云服务器之后,我也就没有理过博客的回复评论邮件通知功能。前2天有朋友跟我说,之前评论都有邮件通知,现在怎么没有了。我想应该是没有开始支持mail()函数的语言,VPS的好处就是自己可以随便折腾。于是研究下怎么开启mail()函数,本文做个记录,方便以后可能用到。

「热议话题」在 lnmp中开启mail功能发送邮件和 sendmail缓慢启动的问题插图
lnmp中开启mail功能发送邮件和 sendmail缓慢启动的问题

测试环境

运行环境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 , 版权所有丨如未注明 , 均为原创

原文标题:「热议话题」在 lnmp中开启mail功能发送邮件和 sendmail缓慢启动的问题

Eswink原创声明
原创声明