У меня есть команда 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
В моих системах Debian (в которых есть Exim, а не «настоящий» sendmail, но все еще есть двоичный файл sendmail для совместимости), когда я хочу отправить почту из сценария, я делаю что-то эквивалентное:
cat <<EOF | sendmail -t
To: recipient@example.com
Subject: Testing
From: sender@example.com
This is a test message
EOF
Обратите внимание, что пустая строка важна.
/ usr / sbin / sendmail
Это неверно.
Вы должны иметь mail
командовать где-нибудь. Это можно было бы назвать mailx
. Должен быть в /bin/
каталог. Как правило, скрипты php никогда не должны ничего вызывать в /sbin
или /usr/sbin
. Программы sbin обычно предназначены для root.
Кроме того, php имеет встроенный почтовая функция.
echo -e "This is my body\nSecond line" 2>&1 | sed '1!b;s/^/To: test@email.com\nSubject: My Test Email Subject\n\n/' | sendmail -t
echo = Тело электронного письма.
sed stuff = Применяет заголовки электронной почты и важную двойную строку между телом и заголовками.
sendmail -t = Передает его напрямую через sendmail.
php -f file.php 2>&1 | sed 's/^/To: test@email.com\nSubject: My Test Email Subject\n\n/' | sendmail -t