Отправка почты из командной строки: пустое тело сообщения
Я почему-то не могу разобраться с этим. Я отправляю письма из командной строки с помощью небольшого скрипта. Но линия
echo 'LOREM IPSUM' | mail -s 'SUBJECT' -a 'From:TEST' < /root/recipients.txt
как-то, похоже, не так. Письмо отправлено, но без текста, и я получаю сообщение об ошибке
mail: Null message body; hope that's ok
Что я здесь не так делаю?
1 ответ
Решение
Вы пытаетесь перенаправить mail
Это из двух источников одновременно:
- Сначала у вас есть
echo | mail
, который связывает stdout echo с stdin почты (через pipe), заменяя стандартный stdin (терминал); - Тогда у вас есть
mail < recipients.txt
, который привязывает файл к стандартному почтовому стандарту, заменяя все предыдущие перенаправления.
Важным моментом является то, что он не объединяет оба входа. Если вам нужно сделать это, используйте некоторую комбинацию cat
и группировка команд:
(cat recipients.txt; echo 'Hello world') | mail -s ...
Баш-только:
cat recipients.txt <(echo 'Hello world') | mail -s ...
Хотя в этом случае может быть лучше передать список получателей в качестве аргументов командной строки вместо ввода:
echo 'Hello world' | mail -s ... $(cat recipients.txt)