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

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

我有一个运行文件的 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

相关内容