我在我的 centos 6 上设置了 msmtp,我知道它运行良好,因为我可以使用 bash 命令发送电子邮件:
echo -e "Subject: Test Mail\r\n\r\nThis is a test mail" |msmtp --debug --from=default -t [email protected]
然后,我继续允许 nginx 也允许使用msmtp
,php.ini
这是我的 sendmail 路径:
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?还是其他问题?
希望有人能帮忙,我已经试了好几个小时了,真是令人沮丧。谢谢!
答案1
从 CentOS 6.6 开始,应用于 Apache 的 SELinux 策略现在也以同样的方式应用于 nginx 和 php-fpm。因此,您需要使用正确的 SELinux 布尔值来允许 Web 服务器发送邮件。
setsebool -P httpd_can_sendmail 1