Wysyłanie wiadomości ze skryptu powłoki Linuksa
Chcę wysłać e-mail ze skryptu powłoki Linuksa. Jakie jest standardowe polecenie, aby to zrobić i czy muszę skonfigurować jakieś specjalne nazwy serwerów?
9 answers
Jeśli serwer jest dobrze skonfigurowany, np. ma uruchomiony MTA, możesz po prostu użyć polecenia mail.
Na przykład, aby wysłać zawartość pliku, możesz to zrobić:
$ cat /path/to/file | mail -s "your subject" [email protected]
man mail
Po Więcej Szczegółów.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-13 22:40:33
Jeśli chcesz mieć czyste i proste podejście w bash, a nie chcesz używać cat
, echo
, itd., najprostszym sposobem byłoby:
mail -s "subject here" [email protected] <<< "message"
<<<
służy do przekierowania standardowego wejścia. Od dawna jest częścią Basha.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-31 15:24:11
Jeśli zarówno exim, jak i ssmtp są uruchomione, możesz wpaść w kłopoty. Więc jeśli chcesz po prostu uruchomić prosty MTA, po prostu mieć prostego klienta smtp do wysyłania powiadomień e-mail dla uporu, należy oczyścić ostatecznie preinstalowany MTA jak exim lub postfix pierwszy i ponownie zainstalować ssmtp.
Potem jest całkiem prosto, konfigurując tylko 2 pliki (revaliases i ssmtp.conf) - Patrz ssmtp doc -, a użycie w skrypcie bash lub bourne ' a jest jak :
#!/bin/sh
SUBJECT=$1
RECEIVER=$2
TEXT=$3
SERVER_NAME=$HOSTNAME
SENDER=$(whoami)
USER="noreply"
[[ -z $1 ]] && SUBJECT="Notification from $SENDER on server $SERVER_NAME"
[[ -z $2 ]] && RECEIVER="another_configured_email_address"
[[ -z $3 ]] && TEXT="no text content"
MAIL_TXT="Subject: $SUBJECT\nFrom: $SENDER\nTo: $RECEIVER\n\n$TEXT"
echo -e $MAIL_TXT | sendmail -t
exit $?
Oczywiście nie zapomnij otworzyć wyjścia Firewalla na port smtp (25).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-23 18:15:21
Inna opcja dla w skrypcie bash:
mailbody="Testmail via bash script"
echo "From: [email protected]" >> /tmp/mailtest
echo "To: [email protected]" >> /tmp/mailtest
echo "Subject: Mailtest subject" >> /tmp/mailtest
echo "" >> /tmp/mailtest
echo $mailbody >> /tmp/mailtest
cat /tmp/mailtest | /usr/sbin/sendmail -t
- plik
/tmp/mailtest
jest nadpisywany za każdym razem, gdy używany jest ten skrypt. - lokalizacja sendmaila może się różnić w zależności od systemu.
- używając tego w skrypcie cron, musisz użyć bezwzględnej ścieżki dla polecenia sendmail.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-06 15:13:53
Ogólnie rzecz biorąc, powinieneś użyć polecenia mail
, Aby wysłać wiadomość za pomocą lokalnego MTA(który dostarczy ją za pomocą SMTP do miejsca docelowego lub po prostu przekaże ją na jakiś bardziej wydajny serwer SMTP, na przykład u Twojego dostawcy usług internetowych). Jeśli nie masz lokalnego MTA (chociaż jest to trochę nietypowe dla systemu UNIKSOPODOBNEGO, aby pominąć jeden), możesz użyć jakiegoś minimalistycznego MTA jak ssmtp .
ssmtp
jest dość łatwy w konfiguracji. Zasadniczo musisz tylko określić, gdzie jest SMTP Twojego dostawcy serwer to:
# The place where the mail goes. The actual machine name is required
# no MX records are consulted. Commonly mailhosts are named mail.domain.com
# The example will fit if you are in domain.com and you mailhub is so named.
mailhub=mail
Inną opcją jest użycie jednego ze skryptów, które po prostu łączą się bezpośrednio z serwerem SMTP i próbują tam wysłać wiadomość, np. Smtp-Auth-Email-Script, smtp-cli, SendEmail , itd.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-01 16:04:23
Przyznając, że chcesz użyć jakiegoś serwera smtp, możesz zrobić:
export SUBJECT=some_subject
export smtp=somehost:someport
export EMAIL=someaccount@somedomain
echo "some message" | mailx -s "$SUBJECT" "$EMAIL"
Zmień somehost
, someport
, i someaccount@somedomain
do rzeczywistych wartości, których byś użył.
W tym przykładzie nie przeprowadza się szyfrowania ani uwierzytelniania.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-11 16:43:58
Nawet nie potrzebujesz MTA. Protokół SMTP jest wystarczająco prosty, aby zapisać go bezpośrednio na serwerze SMTP. Możesz nawet komunikować się przez SSL / TLS, jeśli masz zainstalowany pakiet OpenSSL. Sprawdź ten post: https://33hops.com/send-email-from-bash-shell.html
Powyższy przykład pokazuje, jak wysyłać wiadomości tekstowe / html, które będą działać po wyjęciu z pudełka. Jeśli chcesz dodawać załączniki, sprawa może być nieco bardziej skomplikowana, będziesz musiał Base64 zakodować pliki binarne i osadzić je między granicami. To jest dobre miejsce, aby rozpocząć dochodzenie: http://forums.codeguru.com/showthread.php?418377-Send-Email-w-attachments-using-SMTP
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-12 19:03:02
W Linuksie, narzędzie mail może być użyte do wysłania załącznika z opcją "-a". Przejdź przez strony podręcznika ekranowego, aby przeczytać o tej opcji. Na przykład poniższy kod wyśle Załącznik:
mail-s "THIS IS SUBJECT" - załącznik.txt [email protected]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-21 11:22:47
Robi to komenda mail
(kto by się domyślił; -). Otwórz powłokę i wprowadź man mail
, Aby uzyskać stronę podręcznika dla polecenia mail
dla wszystkich dostępnych opcji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-01 14:40:11