从bash脚本中为多个收件人使用sendmail

时间:2012-11-15 02:53:04

标签: bash sendmail

我在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,它似乎是唯一可用的方法

3 个答案:

答案 0 :(得分:67)

尝试这样做:

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的空白行将标题与正文分开。

答案 1 :(得分:6)

使用选项-t for sendmail。

在你的情况下 - echo -e $mail | /usr/sbin/sendmail -t 并在行To: someone@somewhere.com someother@nowhere.com

之后的From:.....添加yout Recepient列表给消息本身

-t选项意味着 - 阅读收件人的邮件。收件人:,抄送:和密件抄送:将扫描收件人地址的行。传输前将删除密件抄送:行。

答案 2 :(得分:0)

使用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}"