2015-11-18 6 views
0

Я делаю свои первые шаги с Mutt (с msmtp в Slackware 13.1).Скажите Mutt, чтобы прикрепить файлы (перечисленные в файле)

Я уже в состоянии отправить почту с вложениями так:

cat mail.txt | mutt -a "/date.log" -a "/report.sh" -s "subject of message" -- [email protected] 

Я хотел бы определить файлы, которые будут прикреплены в другом файле, а затем сказать Mutt, чтобы прочитать его, что-то вроде этого:

mutt -? listoffilestoattach.txt 

Возможно ли это? Или есть похожие подходы?

ответ

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[@]}" -- [email protected] < 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[@]}" -- [email protected] < 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[@]}" -- [email protected] < mail.txt 
+0

Как поместить Ls ../*.log внутри приложения? – KcFnMi

+0

'приложения + = (../*.log)' – chepner

+0

Не работает @chepner. Добавляется только один файл, а остальные файлы - как адрес электронной почты. – KcFnMi