1

我正在使用 Mutt(在 Slackware 13.1 中使用 msmtp)迈出第一步。

我已经能够发送带有附件的邮件,如下所示:

cat mail.txt | mutt -a "/date.log" -a "/report.sh" -s "subject of message" -- myself@gmail.com

我想定义要附加到另一个文件中的文件,然后告诉 Mutt 读取它,如下所示:

mutt -? listoffilestoattach.txt

可能吗?还是有类似的方法?

4

1 回答 1

1

您可以相当轻松地使用文件名列表填充数组,然后将其用作-a.

while IFS= read -r attachment; do
    attachments+=( "$attachment" )
done < listoffilestoattach.txt
for f in ../*.log; do
    attachments+=("$f")
done

mutt -s "subject of message" -a "${attachments[@]}" -- myself@gmail.com < mail.txt

如果您使用的是bash4 或更高版本,您可以用while(稍微)更友好的readarray命令替换循环:

readarray -t attachments < listoffilestoattach.txt

如果看起来是这样,mutt每个选项需要一个文件-a,那么你需要一些稍微不同的东西:

while IFS= read -r attachment; do
    attachments+=( -a "$attachment" )
done < listoffilestoattach.txt
for f in ../*.log; do
    attachments+=( -a "$f")
done

mutt -s "subject of message" "${attachments[@]}" -- myself@gmail.com < mail.txt

使用readarray,尝试

readarray -t attachments < listoffilestoattach.txt
attachments+=( ../*.log )
for a in "${attachements[@]}"; do
    attach_args+=(-a "$a")
done
mutt -s "subject of message" "${attach_args[@]}" -- myself@gmail.com < mail.txt
于 2015-11-18T14:41:21.880 回答