分类:linux日期:2015-07-01 - 22:10:23评论:11条作者:老谢
mail()函数发信报错:Could not instantiate mail function.,原因是服务器没有安装sendmail组件,使用yum进行安装:
yum install sendmail
/etc/init.d/sendmail start |
yum install sendmail
/etc/init.d/sendmail start
注意:如果sendmail启动缓慢,请将hostname加入到/etc/hosts里面
配置/usr/local/php/etc/php.ini,填写sendmail绝对路径:
vim /usr/local/php/etc/php.ini
sendmail_path = /usr/sbin/sendmail -t -i
:wq!
/etc/init.d/php-fpm restart |
vim /usr/local/php/etc/php.ini
sendmail_path = /usr/sbin/sendmail -t -i
:wq!
/etc/init.d/php-fpm restart
注意:如果邮件显示为xxx代发,请将你的域名加入到/etc/hosts即可
分类:linux日期:2014-05-02 - 20:54:19评论:9条作者:老谢
在折腾自动备份到邮箱的脚本,执行中突然vps变得非常卡,ping了下发现vps的延迟飙升到了2000+,从阿里云后台的监控看上行带宽最大已经达到了1MB/s,
停止sendmail服务后延迟正常,重启后问题依旧,很容易就可以判断应该是邮件发送的附件体积较大占用大量网络资源导致的问题,尝试重启sendmail问题依旧,可以判断重启后邮件仍在发送的列队,会重新发送,平常很少使用mail命令,所以一番搜索后找到答案:
[root@xj123 ~]# sendmail -bp
/var/spool/mqueue (1 request)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
s42CBBlP002728 175369339 Fri May 2 20:11 <root@xj123.info>
<i@xj123.info>
Total requests: 1 |
[root@xj123 ~]# sendmail -bp
/var/spool/mqueue (1 request)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
s42CBBlP002728 175369339 Fri May 2 20:11 <root@xj123.info>
<i@xj123.info>
Total requests: 1
可以查看待发送的列队,看到已经的确是有列队的邮件,我们删除掉就好了,邮件列队文件存放在/var/spool/mqueue/,删除该目录下的对应文件即可
[root@xj123 ~]# cd /var/spool/mqueue
[root@xj123 mqueue]# ls
dfs42CBBlP002728 qfs42CBBlP002728
[root@xj123 mqueue]# rm -rf * |
[root@xj123 ~]# cd /var/spool/mqueue
[root@xj123 mqueue]# ls
dfs42CBBlP002728 qfs42CBBlP002728
[root@xj123 mqueue]# rm -rf *
至此,问题解决,最后再送自己一句话,no zuo no die!!
分类:linux日期:2013-10-02 - 20:50:03评论:3条作者:老谢
经博友空空裤兜提醒,博客评论后木有邮件提醒了,遂之哥来检查这个问题
发信是使用sendmail这个程序,检查后发现sendmail没有运行,启动sendmail后测试PHP发信后发现,提示发信成功,但是邮箱实际并没有收到信
接着先检查下sendmail本身发信有没有问题,可以使用下面的命令
echo "This is test mail" | mail -s 'Test mail' your@mail.com |
echo "This is test mail" | mail -s 'Test mail' your@mail.com
测试后发现可以正常收信,发件人是root@localhost.localdomain,这说明sendmail本身发信并没有问题,问题可能出在php身上
于是乎开始祭谷歌大神,找到了问题的解决办法,首先编辑php.ini
找到sendmail_path去掉前面的注释,路径修改为/usr/sbin/sendmail -t -i,保存重启php-fpm后继续测试,发现企业邮箱可以收到邮件,但是QQ邮箱却收不到,发信人还是root@localhost.localdomain,于是觉得可能是发信人的问题,比如直接被屏蔽啊等等等,反正我也不知道到底是不是,反正先改了再说,于是继续修改php.ini里面的sendmail参数,改成:
sendmail_path = /usr/sbin/sendmail -fyour@mail.com -t -i |
sendmail_path = /usr/sbin/sendmail -fyour@mail.com -t -i
保存后重启php-fpm测试,收信成功,发信人是我自己的邮箱,至此问题解决!
小贴士
sendmail发送邮件时,如果没有指定附加参数,默认它会把当前主机名作为邮件服务器、 以及命令它发邮件的Linux用户名作为发件者,加入到邮件头部信息。
最新评论
老何:不至于跌得这么狠吧
Andy烧麦:这些大厂都能提供必要的售后
王光卫博客:小米生态还是比较丰富
空空裤兜:在天猫买的利维斯顿,阿里智能APP...
林羽凡:我突然发现,你也记录了很多博文了。
菊座:小米的东西还行
zwwooooo:一般电器产品都jd,就是想售后身心
zwwooooo:能随便搞个公司玩玩也算是实力选手
大D:坚持就是胜利哈哈哈
老麦:看着那一排日志存档,老前辈了啊。