Я настраиваю 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
это мой путь к sendmail:
sendmail_path = "/usr/bin/msmtp -C /etc/msmtprc --logfile /var/log/msmtp.log -a gmail -t"
затем я попытался отправить, используя это:
<?php
if(mail("receipient@domain.com","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, политики SELinux, применяемые к Apache, теперь также применяются к nginx и php-fpm таким же образом. Таким образом, вам нужно использовать правильное логическое значение SELinux, чтобы разрешить веб-серверу отправлять почту.
setsebool -P httpd_can_sendmail 1