2012-11-15 6 views
30

Ich führe ein Bash-Skript in Cron, um E-Mails an mehrere Empfänger zu senden, wenn eine bestimmte Bedingung erfüllt ist.Verwenden von sendmail aus dem Bash-Skript für mehrere Empfänger

Ich habe die Variablen wie folgt codiert:

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

das eigentliche Senden:

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

Das Problem ist, dass nur [email protected] die E-Mail empfängt. Wie kann ich das ändern, damit alle Empfänger die E-Mail erhalten?

HINWEIS: Die Lösung muss mit Sendmail sein, ich bin jailshell verwenden und es scheint, die einzige verfügbare Methode

Antwort

60

Versuchen Sie, dies zu sein:

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

Und ein anderer Ansatz, Shell mit hier-doc:

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

Example Message 
EOF 

Seien Sie sicher, dass die Header aus dem Körper mit einer Leerzeile nach RFC 822 zu trennen.

+1

Danke für die EOF-Methode, viel eleganter! – lelouch

5

Verwenden Sie die Option -t für sendmail. liest Nachricht für den Empfänger -

in Ihrem Fall - yout Recepient Liste Nachricht selbst wie To: [email protected] [email protected] gleich nach der Linie From:.....

-t Option bedeutet echo -e $mail | /usr/sbin/sendmail -t und hinzuzufügen. An :, Cc: und Bcc: Zeilen werden nach Empfängeradressen durchsucht. Die Bcc: Zeile wird vor der Übertragung gelöscht.

+0

Wenn ich die Option "-t" übergebe, bekomme ich 'sendmail: Empfänger mit der Option -t nicht unterstützt'. Irgendwelche Ideen? Vielen Dank. – Vassilis