使用 shell 脚本发送电子邮件,使用外部平面文件中的电子邮件地址

使用 shell 脚本发送电子邮件,使用外部平面文件中的电子邮件地址

我正在使用 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命令上提供多个地址。

  1. 假设平面文件中没有 glob 字符,并且电子邮件地址由空格分隔:

    echo "Mail test..." | mail -s "Mail test subject..." $(< address.file)
    
  2. 将换行符分隔的地址列表读入 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[@]}"

干杯

相关内容