我有一个运行文件的 cron 命令,我正在尝试设置输出以便将其通过电子邮件发送给我。我将其与第三方脚本一起使用,但我不想修改直接文件,因此我需要通过管道传输输出,而不是修改 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]
答案1
/usr/sbin/sendmail
那是错误的。
您应该mail
在某个地方有一个命令。它可以称为mailx
。应该在/bin/
目录中。作为标准做法,php 脚本永远不应调用或中的任何内容/sbin
。sbin/usr/sbin
程序通常适用于 root。
此外,php 有一个内置的邮件功能。
答案2
在我的 Debian 系统上(它有 Exim 而不是“真正的” sendmail,但为了兼容仍然有一个 sendmail 二进制文件),当我想从脚本发送邮件时,我会做一些相当于的事情:
cat <<EOF | sendmail -t
To: [email protected]
Subject: Testing
From: [email protected]
This is a test message
EOF
请注意,空行很重要。
答案3
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
echo = 电子邮件正文。
sed stuff = 应用电子邮件标题,以及正文和标题之间的重要双线。
sendmail -t = 直接通过 sendmail 进行管道传输。
答案4
php -f file.php 2>&1 | sed 's/^/To: [email protected]\nSubject: My Test Email Subject\n\n/' | sendmail -t