2

我有一个当前执行的脚本:

cat $body | uuencode $attachment $attachment | sendmail $sender -t

我应该调整什么以便 $attachment 可以是多个附件?我想出了以下内容,但看起来不正确?

cat $body |
for i in $attachments 
do
uuencode $i $i
done
| sendmail $sender -t
4

3 回答 3

0

尝试以下脚本:

# specify list of email recipients
recipients=...
# specify envelope sender address
sender=...
( 
  cat $body
  for i in $attachments 
  do
    uuencode $i $i
  done
) | sendmail -f$sender -i -- $recipients
  • $body文件必须包含消息头(例如Subject:),由消息正文中的空行分隔
  • 恕我直言,通过命令行指定收件人而不是让 sendmail 从标头中提取收件人是一种更好/更安全的方式。
于 2013-11-14T16:47:14.650 回答
0

通常,您不希望在参数中存储文件名列表。使用 default IFS,文件名中嵌入的空格会产生问题。相反,声明一个包含文件的数组

a=(file1 file2 file3 file4)
(for file in "${a[@]}"; do uuencode "$file" "$(basename "$file")"; done) |
 sendmail $sender -t
于 2013-11-12T21:33:02.673 回答
0

FILES="/rollovers/DailyCadRpt.* /rollovers/DailyFireRpt.*"

(对于 $FILES 中的 f ;执行 uuencode "$f" "$f" ;完成) | 邮件 -s “主题”接收者_email@domain.com

以上在 AIX 6.1 中适用于通配符。但是,您必须使用 10-pad 星号。数字 8 上方的星号在 AIX 中不起作用。此外,这没有任何正文。但这与其他示例一样。您可以使用空格作为分隔符来添加更多文件,如我的示例所示。此外,您不能将 Daily* 与任一星号一起使用。AIX 就是不会这样做。星号必须出现在文件名中的句点之后。我们的报告将日期添加到报告名称中,并用句点分隔。它保留了我们的档案命名模式,并且每天都可以获取它,而不需要特定的文件名。

于 2017-02-08T23:30:51.167 回答