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