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.
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
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...