Mail

Etiquettes: 

Envoyer un mail

Pour envoyer un mail via une console Ubuntu :

$ mail -s "sujet du mail" adresse@destinataire.fr

Appuyer sur Entrée, renseigner si besoin une adresse CC, appuyer à nouveau sur Entrée, saisir le texte du message, appuyer une dernière fois sur Entrée puis appuyer sur les touches ctrl+d

Si cette commande est enregistrée dans un script, et si ce script est exécuté automatiquement via une tâche Cron, il n'y a pas de demande concernant l'adresse CC et le texte du message.

Pour envoyer un mail avec une pièce jointe via une console Ubuntu :

Installer le paquet mutt :

$ sudo apt-get install mutt

Envoyer un mail via cette commande :

$ mutt -s "sujet du mail" adresse@destinataire.fr -a /nom_du_fichier
$ mutt -s "Sujet du mail" -a /mon_dossier/mon_fichier -- destinataire@domaine.com

Valider les différentes étapes puis appuyer sur y pour envoyer le mail.

Si cette commande est utilisée dans un script et exécuté automatiquement via une tâche cron, le message est envoyé sans aucune étape supplémentaire à valider

Attention, dans la commande mutt, l'ajout d'une pièce jointe se fait exclusivement en dernier paramètre sans compter l'adresse du destinataire.

Pour envoyer un mail via Telnet :

$ telnet adresse_ip_du_serveur 25
helo votre_nom
mail from:<votreadresse@votredomaine.fr>
rcpt to:<adressedestinataire@domaine.fr>
data
votre message
. (le point est très important, il indique la fin du message)
quit

Etiquettes: 

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: