44

我在 cron 中运行 bash 脚本,以便在满足特定条件时向多个收件人发送邮件。

我已经对变量进行了如下编码:

subject="Subject"
from="user@domain.com"
recipients="user1@gmail.com user2@gmail.com"
mail="subject:$subject\nfrom:$from\nExample Message"

而实际发送:

echo -e $mail | /usr/sbin/sendmail "$recipients"

问题是只有 user2@gmail.com 正在接收电子邮件。如何更改此设置以便所有收件人都收到电子邮件?

注意:解决方案必须使用 sendmail,我使用的是 jailshell,它似乎是唯一可用的方法

4

4 回答 4

87

尝试这样做:

recipients="user1@gmail.com,user2@gmail.com,user3@gmail.com"

还有另一种方法,使用 shell here-doc

/usr/sbin/sendmail "$recipients" <<EOF
subject:$subject
from:$from

Example Message
EOF

请务必按照RFC 822用空行将标题与正文分开。

于 2012-11-15T02:58:39.597 回答
9

使用选项 -t 发送邮件。

在您的情况下 -echo -e $mail | /usr/sbin/sendmail -t 并将您的收件人列表添加到消息本身,就像To: someone@somewhere.com someother@nowhere.com在该行之后一样From:.....

-t选项意味着 - 为收件人阅读消息。To:、Cc: 和 Bcc: 行将被扫描以查找收件人地址。Bcc: 行将在传输前被删除。

于 2015-06-15T13:52:27.177 回答
7

从 shell 脚本中使用 sendmail

subject="mail subject"
body="Hello World"
from="me@domain.com"
to="recipient1@domain.com,recipient2@domain.com"
echo -e "Subject:${subject}\n${body}" | sendmail -f "${from}" -t "${to}"
于 2018-07-17T06:54:21.023 回答
0

对于 postfix sendmail,我添加了一个对脚本有用的行命令

我在 RHEL(未公开的收件人)中的 sendmail 命令末尾添加默认位置的收件人时遇到问题,并且管道回显命令挽救了这一天。

-fhttp://www.postfix.org/sendmail.1.html找到的选项

请注意,echo 中的语法很重要,请在尝试使用 sendmail 之前尝试回显到要检查的文件。

echo -e "To:receiver1@domain1, receiver2@domain2 \nSubject:Subject of email \n\nBody of email.\n" | /usr/sbin/sendmail -f sender@domain -F sendername -it

于 2021-10-19T13:13:20.980 回答