如何使用 uuencode 在一封电子邮件中发送多个附件

如何使用 uuencode 在一封电子邮件中发送多个附件

我有个问题。我需要编写一个脚本来查找 1 天前生成的任何文件,然后从周二到周日凌晨 2 点将其通过电子邮件发送到某个邮件地址?

问题是我的脚本找到了 3 个正确的文件,但要么发送 3 封带有单个附件的不同电子邮件,要么发送 1 封不带任何附件的电子邮件。如何编辑它以在一封电子邮件中发送多个附件?似乎每个文件都需要一个“uuencode”,因此尝试将“uuencode”连接到“文件名”,然后将该变量添加到 ssmpt 命令中。这两个版本都不能真正工作。

我怎样才能编写常规表达式,以便使用一封电子邮件通过电子邮件发送找到的所有文件。我当前的脚本仅发送不带附件的电子邮件,或者每封电子邮件发送 1 个文件。

请帮忙。

我的脚本如下所示:

版本 1:发送 1 封不带附件的电子邮件:

#!/bin/bash
dt=$(date --date yesterday "+%Y-%m-%d")
result="performance-team*-$dt.txt"

arr=()
arr=($(find /root/Desktop/fileNAme -type f -name "${result}"))


for i in "${arr[@]}"
do 
    value=" uuencode -e $i $(basename $i);"
    valueTotal=$valueTotal$value;
done

echo -e "to:[email protected]\nSubject:performance of teams on ${dt};"|(cat - && ${valueTotal};)|/usr/sbin/ssmtp [email protected]

版本 2:发送 3 封电子邮件,每封电子邮件中包含一个附件:

#!/bin/bash
dt=$(date --date yesterday "+%Y-%m-%d")
result="performance-team*-$dt.txt"

arr=()
arr=($(find /root/Desktop/fileNAme -type f -name "${result}"))

Count=0
for i in "${arr[@]}"
do 
    Count=$((Count+1))
    echo -e "to:[email protected]\nSubject:performance of teams on ${dt}; mail    ${Count} of 3\n"|(cat - && uuencode $i;)|/usr/sbin/ssmtp to:[email protected]
done

答案1

uuencode是不适合这项工作的工具。 (虽然它在大约 25 年前是正确的工具,但早已被 MIME 标准取代。)

在我的 Debian 发行版上,脚本可以mail直接使用该命令。其手册页mail除其他外还写着:“-一份文件将给定文件附加到消息中”。下面是发送使用 MIME 编码的三个附件的示例。

echo 'Here is my email' |
    mail -s 'Test message' -a /etc/hosts -a /etc/group -a /etc/motd [email protected]

我没有时间检查下一部分,但看起来像munpack可能是执行反向转换的工具,即将电子邮件中的 MIME 附件提取回文件中。

相关内容