通过 运行 来自 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 使它成为永久性的,所以它在重新启动后仍然有效。命令可能需要一段时间才能执行。