Mam polecenie cron, które uruchamia plik i próbuję skonfigurować dane wyjściowe, aby wysyłały mi e-maile. Używam tego ze skryptami innych firm, że nie chcę modyfikować plików bezpośrednich, więc muszę modyfikować dane wyjściowe zamiast modyfikować PHP.
Przeprowadzam migrację z serwera używającego mail
na serwer używający sendmail
. Próbuję dowiedzieć się, jak prawidłowo wysłać temat do sendmaila za pomocą wiersza polecenia.
/usr/local/bin/php -f /path/to/file.php 2>&1 | /usr/sbin/sendmail -s "My Test Email Subject" [email protected]
sendmail
to plik binarny używany przez system do kierowania poczty przesyłanej do niego przezmail
. Jest częścią pakietu programów takich jak sendmail , postfix , exim i tak dalej. Musisz więc zainstalować odpowiedni pakiet dla poczty . Więc powiedz nam, której dystrybucji używasz.Odpowiedzi:
To jest źle.
Powinieneś mieć
mail
komendę gdzieś. Można to nazwaćmailx
. Powinien być w/bin/
katalogu. Zgodnie ze standardową praktyką skrypty php nigdy nie powinny wywoływać niczego w/sbin
lub/usr/sbin
. Programy sbin są zazwyczaj przeznaczone do rootowania.Ponadto php ma wbudowaną funkcję poczty .
źródło
mail
lubmailx
może byćMail
. Ale nawet jeśli nie istnieją, możesz zainstalować mutt i uruchomić,mutt -x
który emulujemailx
.which mail
i wróciła/bin/mail
.Na moich systemach Debiana (które mają Exima zamiast „prawdziwego” sendmaila, ale nadal mają binarny sendmail dla kompatybilności), kiedy chcę wysłać pocztę ze skryptu, robię coś równoważnego:
Pamiętaj, że pusta linia jest ważna.
źródło
sendmail -t <<EOF
?sendmail
miałby się nie powieść i napisać do STDERR, jak mógłbym uchwycić to jako zmienną do późniejszego użycia w skrypcie?echo = treść wiadomości e-mail.
sed stuff = Stosuje nagłówki wiadomości e-mail i ważną podwójną linię między treścią a nagłówkami.
sendmail -t = Potokuje bezpośrednio przez sendmail.
źródło
źródło