通过 运行 来自 php 的 shell 脚本发送邮件
Sending a mail by running a shell script from php
因此,出于某种原因,我无法将 mail() PHP 函数和 PHPMailer 与 SMTP 一起使用。所以寻找选项,我写了一个简短的 shell 脚本来发送带有附件的电子邮件,如下所示:
#!/bin/bash
echo "Some text " | mail -a "/path/to/attached/file.xlsx" -s "Subject text" some@email.com
当我直接从终端 运行 文件时,它工作得很好,邮件和附件都被正确接收了。
但是当我尝试从 PHP 到 运行 时,我有以下代码:
shell_exec("bash /path/to/script $m1t $m2t $afl");
它没有显示任何错误,也没有 return 任何输出,但邮件没有发送。
我不能让 shell 脚本通过 PHP 调用来发送电子邮件吗?还是我做错了什么?
感谢对此事的任何帮助。
对于 Red Hat Enterprise Linux、CentOS、Fedora 和其他 Linux-带有 SELinux 的发行版,您应该验证是否允许 Apache 进程访问 sendmail
.这可以通过登录服务器(SSH
或打开终端,如果是本地主机)和 运行
来完成
getsebool httpd_can_sendmail
当输出为httpd_can_sendmail --> off
时,您可以通过
启用它
sudo setsebool -P httpd_can_sendmail on
-P
-flag 使它成为永久性的,所以它在重新启动后仍然有效。命令可能需要一段时间才能执行。
因此,出于某种原因,我无法将 mail() PHP 函数和 PHPMailer 与 SMTP 一起使用。所以寻找选项,我写了一个简短的 shell 脚本来发送带有附件的电子邮件,如下所示:
#!/bin/bash
echo "Some text " | mail -a "/path/to/attached/file.xlsx" -s "Subject text" some@email.com
当我直接从终端 运行 文件时,它工作得很好,邮件和附件都被正确接收了。
但是当我尝试从 PHP 到 运行 时,我有以下代码:
shell_exec("bash /path/to/script $m1t $m2t $afl");
它没有显示任何错误,也没有 return 任何输出,但邮件没有发送。
我不能让 shell 脚本通过 PHP 调用来发送电子邮件吗?还是我做错了什么?
感谢对此事的任何帮助。
对于 Red Hat Enterprise Linux、CentOS、Fedora 和其他 Linux-带有 SELinux 的发行版,您应该验证是否允许 Apache 进程访问 sendmail
.这可以通过登录服务器(SSH
或打开终端,如果是本地主机)和 运行
getsebool httpd_can_sendmail
当输出为httpd_can_sendmail --> off
时,您可以通过
sudo setsebool -P httpd_can_sendmail on
-P
-flag 使它成为永久性的,所以它在重新启动后仍然有效。命令可能需要一段时间才能执行。