2012-11-15 14 views
30

Używam skryptu bash w cron, aby wysłać pocztę do wielu odbiorców, gdy spełniony jest określony warunek.Używanie sendmaila ze skryptu bash dla wielu odbiorców

mam zakodowane zmienne tak:

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

a przesłaniem:

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

Problemem jest to, że tylko [email protected] odbiera wiadomość. Jak mogę to zmienić, aby wszyscy odbiorcy otrzymali wiadomość e-mail?

UWAGA: Rozwiązaniem ma być z Sendmail, używam jailshell i wydaje się być jedyną dostępną metodą

Odpowiedz

60

Spróbuj zrobić tak:

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

I kolejne podejście, stosując powłokę tu-doc:

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

Example Message 
EOF 

pamiętaj, aby oddzielić nagłówki z organizmu z pustym wierszu co za RFC 822.

+1

Dzięki za metodę EOF, o wiele bardziej elegancka! – lelouch

5

Użyj opcji -t dla sendmail.

w Twoim przypadku - echo -e $mail | /usr/sbin/sendmail -t i dodaj swój listy Odbiorca do samej wiadomości jak To: [email protected] [email protected] tuż po linii From:.....

-t opcja oznacza - wiadomości czytelne dla odbiorców. Do :, Cc :, i Bcc: linie będą skanowane pod kątem adresów odbiorców. Linia Bcc: zostanie usunięta przed transmisją.

+0

Kiedy przekażę opcję '-t', otrzymuję' sendmail: adresatów z opcją -t nieobsługiwaną'. Jakieś pomysły? Dzięki. – Vassilis

Powiązane problemy