У меня есть команда cron, которая запускает файл, и я пытаюсь настроить вывод, чтобы он отправлял мне электронные письма. Я использую это со сторонними сценариями, которые я не хочу изменять в прямых файлах, поэтому мне нужно направить вывод вместо модификации PHP.
Я мигрирую с сервера, который использует, mail
на сервер, который использует sendmail
. Я изо всех сил пытаюсь выяснить, как правильно отправить тему на sendmail через командную строку.
/usr/local/bin/php -f /path/to/file.php 2>&1 | /usr/sbin/sendmail -s "My Test Email Subject" test@email.com
sendmail
это двоичный файл, который используется вашей системой для маршрутизации почты, которая отправляется емуmail
. Он является частью набора программ, таких как sendmail , postfix , exim и так далее. Поэтому вам необходимо установить соответствующий пакет для почты . Так скажите нам, какой дистрибутив Linux вы используете.Ответы:
Это неверно.
Вы должны иметь
mail
команду где-нибудь. Это можно назватьmailx
. Должен быть в/bin/
каталоге. Как стандартная практика, php-скрипты никогда не должны вызывать ничего в/sbin
или/usr/sbin
. Программы sbin обычно предназначены для пользователя root.Кроме того, PHP имеет встроенную функцию почты .
источник
mail
илиmailx
может бытьMail
. Но даже если таких не существует, вы можете установить Mutt и запустить,mutt -x
который эмулируетmailx
.which mail
и он вернулся/bin/mail
.В моих системах Debian (которые имеют exim, а не «реальный» sendmail, но все еще имеют бинарный файл sendmail для совместимости), когда я хочу отправлять почту из скрипта, я делаю что-то эквивалентное:
Обратите внимание, что пустая строка важна.
источник
sendmail -t <<EOF
и нет?sendmail
они потерпят неудачу и запишут в STDERR, как я могу записать это как переменную для использования позже в скрипте?echo = тело письма.
sed stuff = Применяет заголовки писем и важную двойную строку между телом и заголовками.
sendmail -t = передает его напрямую через sendmail.
источник
источник