Accueil > Divers (et d’été) > Informatique > Scripts et outils maison > Envoyer un mail HTML contenant des images
Envoyer un mail HTML contenant des images
jeudi 15 juillet 2010, par
Il est parfois utile d’envoyer, de manière automatique, un email formaté, au format HTML, contenant des images « embedded », c’est à dire incluses dans le mail lui même (et non stockées sur un serveur distant).
Sous linux, il existe une solution simple, en utilisant l’utilitaire « metasend ». Il convient pour cela de créer un fichier html (ex : mail.html) contenant le corps du message et référençant les images via un id. Par exemple :
<html>
<body>
Voici une image : <img src='cid:id_001.gif'>
</body>
</html>
On utilise alors « metasend » pour envoyer le message comme suit :
metasend -b \
-F from@domewhere.com \
-t someone@somewhere.com \
-s "sujet du message" \
-/ related \
-m text/html -f mail.html \
-n -m "image/gif" -f image1.gif -i '<id_001.gif>'
Explication des options (voir ici) :
- -b indique que metasend fontionne en mode batch
- -F adresse de l’émetteur du mail
- -t adresse du destinataire
- -s sujet du message
- -/ indique que le mode d’envoi MIME est « related » (ie. plusieurs pièces jointes formant un ensemble)
- -m indique le type de la première pièce jointe (text/html)
- -f nom du premier fichier à joindre
- -n indique que l’on passe à la seconde pièce jointe
- -m donne son type (image/gif)
- -f nom du second fichier à joindre
- -i précise l’ID de l’objet (permet la référence href dans le corps du mail)
Cette dernière ligne (-n .../...) peut être répétée autant de fois qu’il y a d’images à joindre, en utilisant à chaque fois un Id différent.
Remarque : le type indiqué doit refléter le véritable type de l’image sous peine de ne pas pouvoir afficher cette dernière dans certains cas (ex : Internet Explorer en consultation de Gmail).