我有一个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道。