Envoyer un mail en HTML

Il est quand même plus agréable de recevoir un mail en HTML qu'en texte brut.

La commande mail propose l'option -a qui permet de modifier l'en-tête du message.

Comme des exemples valent mieux qu'une grande explication :

$ echo "<html><head></head><body><p>Mon premier mail en <b>HTML</b></p></body></html>" | mail -a "MIME-Version: 1.0" -a "Content-Type: text/html" -s "Message" moi@gmail.lui

C'est quand même vachement simple.

Ecrire du HTML avec la commande echo, c'est sympa, mais un peu chiant si le message est long et pleins de balises.

Qu'à cela ne tienne, on écrit le HTML dans un fichier et on envoie le contenu du fichier par mail.

$ cat testMail.html
<html>
        <head>
        </head>
        <body>
        <h1>Mon Premier Mail En HTML</h1>
        <p>
                Qu'est ce que c'est chouette de pouvoir écrire des mails en HTML
        </p>
        <P>
                On peut y insérer des liens ... <br />
                <a href="http://www.quennec.fr">Mon Site</a> <br />
                <a href="mailto:moi@gmail.lui">Mon mail</a>
        </p>
        </body>
</html>

$ cat testMail.html | mail -a "MIME-Version: 1.0" -a "Content-Type: text/html" -s "Message" moi@gmail.lui

De mieux en mieux.

Bonus :

Je m'envoie très souvent par mail des données issues de requêtes SQL.
Qu'est ce que c'est moche la représentation des tableaux en texte brut.
L'option -H utilisée avec la commande mysql permet de formater le résultat en tableau HTML.

Le top du top.

$ ( echo -n "<html><head></head><body>" ; echo "select col1, col2, col3 from maTable" | mysql -H -h localhost -u user -ppass maBase ; echo "</body></html>" ) | mail -a "MIME-Version: 1.0" -a "Content-Type: text/html" -s "Le Résultat de ma requête" moi@gmail.lui

Petite explication :

On affiche, avec la commande echo, la balise <html><head> </head> et <body> sans retour à la ligne avec l'option -n.
On enchaine avec la requête SQL (echo "select ...") qu'on transmet à mysql avec un "|" et qu'on exécute avec l'option -H pour afficher le résultat au format HTML.
On enchaine avec la commande echo pour afficher la balise fermante </body> et </html>.
On regroupe toutes ces commandes entre parenthèses afin de les envoyer à la commande mail avec un "|".
On indique à la commande mail d'envoyer le contenu du mail au fromat HTML grâce aux paramètres de l'option -a.

La classe, non ?

Etiquettes: