告诉Mutt附加文件(在文件中列出)

时间:2015-11-18 14:17:48

标签: linux bash shell mutt slackware

我正在与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

有可能吗?或者有类似的方法?

1 个答案:

答案 0 :(得分:0)

您可以非常轻松地使用文件名列表填充数组,然后将其用作-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

如果您使用bash 4或更高版本,则可以使用(稍微)更具交互性的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