通过从php运行shell脚本发送邮件

时间:2017-07-27 19:22:10

标签: php bash shell email shell-exec

因此,由于某种原因,我无法使用mail()PHP函数,也无法使用PHPMailer和SMTP。所以在寻找选项时,我写了一个简短的shell脚本来发送带有附件的电子邮件,如下所示:

#!/bin/bash
echo "Some text $1 $2 $3" | mail -a "/path/to/attached/file.xlsx" -s "Subject text" some@email.com 

当我直接从终端运行文件时,它运行正常,并且附件和所有邮件都正确收到。

但是当我尝试从PHP运行时,我有以下代码:

shell_exec("bash /path/to/script $m1t $m2t $afl");

它没有显示任何错误,也没有返回任何输出,但邮件没有发送。

我不能通过PHP调用shell脚本发送电子邮件吗?或者我做错了什么?

感谢有关此事的任何帮助。

1 个答案:

答案 0 :(得分:0)

对于红帽企业Linux,CentOS,Fedora和其他Linux发行版,您应该验证是否允许Apache进程访问sendmail。这可以通过登录服务器(SSH或打开终端,如果是localhost)并运行

来完成。
getsebool httpd_can_sendmail

当输出为httpd_can_sendmail --> off时,您可以通过

启用它
sudo setsebool -P httpd_can_sendmail on

-P - 标志使其成为永久性标志,因此重启后仍然有效。命令可能需要一段时间才能执行。