我在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使用空行将标题与正文分开.
使用选项-t for sendmail.
在你的情况下 - echo -e $mail | /usr/sbin/sendmail -t
并添加你的Recepient列表到消息本身就像To: someone@somewhere.com someother@nowhere.com在行之后From:.....
-t选项意味着 - 为收件人阅读邮件.收件人:,抄送:和密件抄送:将扫描收件人地址的行.传输前将删除密件抄送:行.
从 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)