如何通过命令行pipe道发送邮件

我有一个cron命令运行一个文件,我试图设置输出,所以它通过电子邮件发送给我。 我用第三方脚本,我不想修改直接文件,所以我需要pipe输出,而不是修改PHP。

我正在从使用mail的服务器迁移到使用sendmail的服务器。 我努力找出如何通过命令行正确地发送主题到sendmail。

 /usr/local/bin/php -f /path/to/file.php 2>&1 | /usr/sbin/sendmail -s "My Test Email Subject" [email protected] 

/ usr / sbin目录/ sendmail的

那不对。

你应该有一个mail命令在哪里。 它可以被称为mailx 。 应该在/bin/目录下。 作为标准做法,php脚本不应该在/sbin/usr/sbin调用任何东西。 sbin程序通常用于root用户。

此外,PHP有一个内置的邮件function 。

在我的Debian系统(有Exim而不是“真正的”sendmail,但仍然有兼容的sendmail二进制文件),当我想从一个脚本发送邮件时,我做了一些等同于:

 cat <<EOF | sendmail -t To: [email protected] Subject: Testing From: [email protected] This is a test message EOF 

请注意,空白行很重要。

 php -f file.php 2>&1 | sed 's/^/To: [email protected]\nSubject: My Test Email Subject\n\n/' | sendmail -t 
 echo -e "This is my body\nSecond line" 2>&1 | sed '1!b;s/^/To: [email protected]\nSubject: My Test Email Subject\n\n/' | sendmail -t 

回声=电子邮件的正文。
sed stuff =应用电子邮件标题,以及正文和标题之间的重要双线。
sendmail -t =直接通过sendmailpipe道。