我安装msmtp在我的centos 6,我知道它的工作正常,因为我可以使用bash命令发送电子邮件:
echo -e "Subject: Test Mail\r\n\r\nThis is a test mail" |msmtp --debug --from=default -t username@gmail.com
那么,我正在继续让nginx也允许使用msmtp ,在我的php.ini这是我的sendmailpath:
sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc --logfile /var/log/msmtp.log -a gmail -t"
那么,我试着用这个发送:
<?php if(mail("[email protected]","A Subject Here","Hi there,\nThis email was sent using PHP's mail function.")) print "Email successfully sent"; else print "An error occured"; ?>
但是,它一直失败,我开始认为这是因为permission因为没有写在日志中,这里是我有权限
对于msmtprc @ / etc /
[root@xxxx ~]# cd /etc/ [root@xxxx etc]# ls -l -rw------- 1 nginx nginx 248 Apr 2 14:55 msmtprc
为/ var / log
-rw-r--r-- 1 nginx nginx 788 Apr 2 14:56 msmtp.log
它是权限问题吗? 或其他人。 我应该给chown nginx? 还是其他的?
希望有人能帮助,我已经做了几个小时的试验和错误,这是令人沮丧的。 谢谢!
自CentOS 6.6以来,应用于Apache的SELinux策略现在也以相同的方式应用于nginx和php-fpm。 因此,您需要使用正确的SELinux布尔值来允许Web服务器发送邮件。
setsebool -P httpd_can_sendmail 1