web-dev-qa-db-fra.com

mail: envoyer un e-mail avec pièce jointe à partir de la ligne de commande

Je sais comment envoyer un e-mail à partir de la ligne de commande (script)

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

Est-il également possible d'envoyer des pièces jointes à partir de la ligne de commande (script)?

J'utilise heirloom-mailx sur Debian Wheezy.

9
Martin Vegter

La manière la plus simple: utiliser uuencode (partie du package sharutils). La mise en forme ou le corps du texte ne sont pas disponibles. Juste un e-mail avec pièce jointe et objet personnalisé.

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

La manière complexe: pour utiliser la mise en forme sendmail et 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

en cas de plusieurs pièces jointes, la dernière partie peut être répétée.

20
rush

Avec mutt au lieu de mail vous appelleriez simplement

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

Ici, attachmentN est la liste des fichiers que vous souhaitez joindre.

13
tkrennwa