shell 发送带有附件的电子邮件时遇到问题

hsvhsicv  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(304)

我在向多个收件人发送电子邮件时遇到问题。脚本运行良好,使用表中的收件人列表创建文件,但不发送电子邮件。我还想附加该文件。以下是脚本的一部分;请让我知道这个问题。谢谢。
如果[ -s dataStnd_viol_addr.log ];然后

if [ ${update_instance} == "BPROD"  ] 
  then
        ##########echo | mailx -s "***** Data Standard Violation - Address *****" -S 
      "from=noreply@gsu.edu" -a "dataStnd_viol_addr.log" ${BPROD_LIST};
    while read dest;
        do 
            echo | mailx -s "***** Data Standard Violation - Address *****" -S 
      "from=noreply@gsu.edu" $dest < $REPORT/dataStnd_viol_addr.log
        done < $REPORT/Email_PRODlist.lst
    elif [ ${update_instance} == "B8QA"  ]
    then
        while read dest1;
        do 
            echo | mailx -s "***** Data Standard Violation - Address *****" -S 
    "from=noreply@gsu.edu" $dest1 < $REPORT/dataStnd_viol_addr.log
        done < $REPORT/Email_QAlist.lst
        
else 
    while read dest2;
        do 
            echo | mailx -s "***** Data Standard Violation - Address *****" -S 
  "from=noreply@gsu.edu" $dest2 < $REPORT/dataStnd_viol_addr.log
            
        done < $REPORT/Email_DEVlist.lst 
fi

cd ${working_dir}

working_dir=""; export working_dir
working_sql_dir=""; export working_sql_dir
update_instance=""; export update_instance
days_back=""; export days_back
rsaldnfx

rsaldnfx1#

您向mailx提供输入a * 同时**使用管道和重定向。我不知道哪个优先。我建议删除所有的echo|
此外,似乎有2个相互竞争的重定向,mailx可能会将输入发送到while循环。
试试看:

subject="***** Data Standard Violation - Address *****"
logfile="$REPORT/dataStnd_viol_addr.log"

while IFS= read -r dest2 <&3 ;do 
    mailx -s "$subject" -S "from=noreply@gsu.edu" "$dest2" < "$logfile"
done 3< "$REPORT/Email_DEVlist.lst"

read正在使用文件描述符3,而mailx正在使用文件描述符1,不存在冲突的可能性。
请注意,这不会 * 附加 * 文件:文件内容将是邮件正文。请检查您的mailx版本是否有-a选项。

相关问题