Я почему-то не могу обдумать это. Я отправляю письма из командной строки с помощью небольшого скрипта. Но линия

echo 'LOREM IPSUM' | mail -s 'SUBJECT' -a 'From:TEST' < /root/recipients.txt

как-то, похоже, не так. Письмо отправлено, но без текста, и я получаю сообщение об ошибке

mail: Null message body; hope that's ok

Что я здесь не так делаю?

1 ответ1

1

Вы пытаетесь перенаправить mail ввод из двух источников одновременно:

  1. Сначала у вас есть echo | mail , который связывает stdout echo с stdin почты (через pipe), заменяя стандартный stdin (терминал);
  2. Затем у вас есть mail < recipients.txt , который привязывает файл к стандартному почтовому стандарту, заменяя все предыдущие перенаправления.

Важным моментом является то, что он не объединяет оба входа. Если вам нужно сделать это, используйте комбинацию cat и command:

  • (cat recipients.txt; echo 'Hello world') | mail -s ...

  • только для bash: cat recipients.txt <(echo 'Hello world') | mail -s ...

Хотя в этом случае может быть лучше передать список получателей в качестве аргументов командной строки вместо ввода:

  • echo 'Hello world' | mail -s ... $(cat recipients.txt)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .