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

lel*_*uch 33 bash sendmail

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

我编码了这样的变量:

subject="Subject"
from="user@domain.com"
recipients="user1@gmail.com user2@gmail.com"
mail="subject:$subject\nfrom:$from\nExample Message"
Run Code Online (Sandbox Code Playgroud)

而实际发送:

echo -e $mail | /usr/sbin/sendmail "$recipients"
Run Code Online (Sandbox Code Playgroud)

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

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

Gil*_*not 72

试着这样做:

recipients="user1@gmail.com,user2@gmail.com,user3@gmail.com"
Run Code Online (Sandbox Code Playgroud)

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

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

Example Message
EOF
Run Code Online (Sandbox Code Playgroud)

请务必根据RFC 822使用空行将标题与正文分开.


Har*_*nis 6

使用选项-t for sendmail.

在你的情况下 - echo -e $mail | /usr/sbin/sendmail -t 并添加你的Recepient列表到消息本身就像To: someone@somewhere.com someother@nowhere.com在行之后From:.....

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


Den*_*mar 6

从 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}"
Run Code Online (Sandbox Code Playgroud)