我面临一个奇怪的问题:我在项目中有一个名为mail.php的文件。当我从shell运行命令时:
php mail.php
它会在几秒钟内发送邮件,但在运行相同的文件时:
https://www.domain.com/mail.php
使用此代码没有邮件发送:
<?php
echo "Sending mail now....";
mail("mr.atanu.dey.83@gmail.com", "PHP Test mail", "Hope this works! ");
?>
有人能帮助我吗?
答案 0 :(得分:1)
可能是SELinux已启用,并且根据SELinux默认配置,不允许通过apache / web服务器发送邮件。
要检查SELinux是否已启用且已配置为停止发送电子邮件,请运行以下命令:
getsebool -a | grep mail
allow_postfix_local_write_mail_spool --> on
httpd_can_sendmail --> off
logging_syslogd_can_sendmail --> off
现在,为了配置SELinux以允许apache发送电子邮件,请运行以下命令:
setsebool -P httpd_can_sendmail on
检查此答案,它解决了我的问题: Not able to send mail when running through webserver but able to send from command line with same php script
答案 1 :(得分:0)
可能的解决方案:
在php.ini中替换
sendmail_path = /usr/sbin/sendmail -t -i
与
sendmail_path = /usr/sbin/sendmail.postfix -t -i
然后重启Apache。