Envoi multiple avec mailx

Problématique

Lorsqu'on veut envoyer un courriel en shell, il peut parfois être utile de l'envoyer à plusieurs personne en même temps. La solution standard consiste à mettre tous les destinataire les uns après les autres, séparés par une virgule, sans espace dans la liste. Mais il arrive que parfois, la liste soit générée dynamiquement par un programme ou une requête (SQL par exemple) et, dans ce cas, il y a un destinataire par ligne.

Solution

La solution longue

La solution longue mais plus évidente consiste à faire une boucle qui lit un fichier contenant les destinataires dans laquelle on éxécute à chaque tour mailx pour un destinataire.

cat ${FILENAME} | while read destinataire
do
mailx -s "${sujet}" ${destinataire} < ${fichier_message}
done

ou encore

cat ${FILENAME} | while read destinataire
do
cat ${fichier_message} | mailx -s "${sujet}" ${destinataire}
done

La solution courte

mailx -s "${sujet}" `cat liste.txt` < ${fichier_message}

ou encore

cat ${fichier_message} | mailx -s "${sujet}" `cat liste.txt`

liste.txt le fichier contenant la liste des destinataires...