我正在使用 alexkowalski 脚本使用 shell 脚本发送电子邮件
MAILADDR=([email protected], [email protected], [email protected])
for i in "${MAILADDR[@]}"
do
echo "Mail test..." | mail -s "Mail test subject..." $i
done
我的问题是如何MAILADDR
从外部平面文件读取数组?
以及如何插入外部平面文件替换电子邮件正文,如下所示
echo"/home/user/information-for-any-user.txt" | mail -s "Mail test subject..." $i ??
答案1
如果从中获取电子邮件地址的“外部平面文件”看起来不太有趣(格式良好),您可以使用类似的东西:
mail -s "My subject" $(cat /this/is/the/external/flat/file.txt) < /home/user/information-for-any-user.txt
答案2
您可以在mail
命令上提供多个地址。
假设平面文件中没有 glob 字符,并且电子邮件地址由空格分隔:
echo "Mail test..." | mail -s "Mail test subject..." $(< address.file)
将换行符分隔的地址列表读入 bash 数组
mapfile -t addr < address.file echo "Mail test..." | mail -s "Mail test subject..." "${addr[@]}"
答案3
非常感谢,结合两个答案完成了这项工作。
mapfile -t addr < /home/user/address-file #(每行一个电子邮件地址)
echo "$(cat < /home/user/任何用户的信息)" | mail -s "我的主题" "${addr[@]}"
干杯