web-dev-qa-db-fra.com

Utilisation du script sendmail from bash pour plusieurs destinataires

J'exécute un script bash dans cron pour envoyer un courrier à plusieurs destinataires lorsqu'une certaine condition est remplie.

J'ai codé les variables comme ceci: 

subject="Subject"
from="[email protected]"
recipients="[email protected] [email protected]"
mail="subject:$subject\nfrom:$from\nExample Message"

Et l'envoi réel:

echo -e $mail | /usr/sbin/sendmail "$recipients"

Le problème est que seul [email protected] reçoit le courrier électronique. Comment puis-je changer cela pour que tous les destinataires reçoivent le courrier électronique?

NOTE: La solution doit être avec sendmail, j'utilise jailshell et cela semble être la seule méthode disponible

31
lelouch

Essayez de faire ceci:

recipients="[email protected],[email protected],[email protected]"

Et une autre approche, en utilisant Shell here-doc:

/usr/sbin/sendmail "$recipients" <<EOF
subject:$subject
from:$from

Example Message
EOF

Assurez-vous de séparer les en-têtes du corps avec une ligne vide conformément à RFC 822 .

65
Gilles Quenot

Utilisez l'option -t pour sendmail.

dans votre cas - echo -e $mail | /usr/sbin/sendmail -t et ajoutez votre liste de destinataires au message lui-même comme To: [email protected] [email protected] juste après la ligne From:.....

-t option signifie - Lire le message pour les destinataires. Pour:, Cc: et Cci: les lignes seront analysées pour rechercher les adresses des destinataires. La ligne Cci: sera supprimée avant la transmission.

6
Harijs Krūtainis

utiliser sendmail à partir du script shell

subject="mail subject"
body="Hello World"
from="[email protected]"
to="[email protected],[email protected]"
echo -e "Subject:${subject}\n${body}" | sendmail -f "${from}" -t "${to}"
0
Denish Thummar