mail: envia email com anexo da linha de comando [duplicata]

9

Eu sei como enviar um email a partir da linha de comando (script)

echo "body" | mail -s "subject" [email protected]

É possível enviar anexos da linha de comando (script) também?

Estou usando o heirloom-mailx no Debian Wheezy.

    
por Martin Vegter 21.11.2013 / 15:46

2 respostas

20

A maneira simples: usar uuencode (parte do pacote sharutils ). Qualquer formatação ou texto do corpo estão indisponíveis. Apenas um email com anexo e assunto personalizado.

uuencode /path/to/file file_name.ext | mail -s subject [email protected]

A maneira complexa: usar a formatação sendmail e html:

v_mailpart="$(uuidgen)/$(hostname)"
echo "To: [email protected]
Subject: subject
Content-Type: multipart/mixed; boundary=\"$v_mailpart\"
MIME-Version: 1.0

This is a multi-part message in MIME format.
--$v_mailpart
Content-Type: text/html
Content-Disposition: inline

<html><body>Message text itself.</body></html>

--$v_mailpart
Content-Transfer-Encoding: base64
Content-Type: application/octet-stream; name=file_name.ext
Content-Disposition: attachment; filename=file_name.ext

'base64 /path/to/file'
 --$v_mailpart--" | /usr/sbin/sendmail -t

no caso de vários anexos, a última parte pode ser repetida.

    
por 21.11.2013 / 15:56
12

Com mutt em vez de mail , você simplesmente ligaria para

echo "body" | mutt -s "subject" -a attachment0 attachment1 [...] -- [email protected]

Aqui, attachmentN são a lista de arquivos que você deseja anexar.

    
por 21.11.2013 / 16:24