通过一封电子邮件发送文件内容()

时间:2018-05-11 18:56:53

标签: bash shell unix

我是一个读取文件内容的简单程序,如果找到某些名称,我只需要通过电子邮件发送这些文字。电子邮件部分在每次迭代时发送单独的电子邮件,而不是将所有电子邮件组合在一起。

Chokeberry
Hawthorn
Loquat
Medlar
Pear

这是代码的一部分

file="/home/rkelly/Downloads/names.txt"
while IFS=, read -ra names; do
    printf "%s\n" "${names[@]}"

    for ((i=0; i < ${#fields[@]}; i++)); do
        srvnm=`echo ${hostname:0:3} | tr [a-z] [A-Z]`
        curdtm=$(date)
        subject= "Hello"
        echo "${fields[i]}" |mailx -s "$subject $curdtm" -a "$logpathfile" -r $srvnm $eml01
        done   
    done < "$file" 

我希望在一封电子邮件中获得结果,现在我收到5封不同的电子邮件。

1 个答案:

答案 0 :(得分:0)

将mailx命令移到循环之外。

file="/home/rkelly/Downloads/names.txt"
srvnm=`echo ${hostname:0:3} | tr [a-z] [A-Z]`
curdtm=$(date)
subject="Hello"
content=""
while IFS=, read -ra names; do
    printf "%s\n" "${names[@]}"
    for ((i=0; i < ${#fields[@]}; i++)); do
        content=$content'\n'${fields[i]}
    done   
done < "$file"
mailx -s "$subject $curdtm" -a "$logpathfile" -r $srvnm $eml01 $content