Você está tentando redirecionar o stdin de mail
de duas origens de uma só vez:
- Primeiro você tem
echo | mail
, que liga o stdout do echo ao stdin do mail (via pipe), substituindo o stdin padrão (terminal); - Então você tem
mail < recipients.txt
, que liga o arquivo ao stdin do e-mail, substituindo quaisquer redirecionamentos anteriores.
O bit importante sendo, ele não combina as duas entradas. Se você precisar fazer isso, use alguma combinação de cat
e agrupamento de comandos:
-
(cat recipients.txt; echo 'Hello world') | mail -s ...
-
somente bash:
cat recipients.txt <(echo 'Hello world') | mail -s ...
Embora, nesse caso, seja melhor passar a lista de destinatários como argumentos da linha de comando em vez de inserir:
-
echo 'Hello world' | mail -s ... $(cat recipients.txt)