відправлення пошти з командного рядка: Нульове тіло повідомлення


0

Я якось не можу опустити голову в цьому. Я надсилаю листи з командної лінії за допомогою невеликого сценарію. Але лінія

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

якось, здається, помиляється. Лист надсилається, але без будь-якого тексту, і я отримую помилку

mail: Null message body; hope that's ok

Що я тут роблю неправильно?

Відповіді:


1

Ви намагаєтесь перенаправити mailstdin з двох джерел одночасно:

  1. Спочатку у вас є echo | mail, що пов'язує stdout echo до stdin пошти (через трубу), замінюючи stdin (термінал) за замовчуванням;
  2. Тоді ви маєте mail < recipients.txt, який прив'язує файл до stdin пошти, замінюючи будь-які попередні переадресації.

Важливим є те, що він не поєднує обох входів. Якщо вам потрібно це зробити, використовуйте комбінацію 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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.