enviando e-mail da linha de comando: corpo de mensagem nulo

0

Eu sou incapaz de entender isso. Estou enviando e-mails da linha de comando com a ajuda de um pequeno script. Mas a linha

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

de alguma forma parece estar errado. O e-mail é enviado mas sem nenhum texto e eu recebo o erro

mail: Null message body; hope that's ok

O que estou fazendo de errado aqui?

    
por farosch 13.01.2017 / 11:38

1 resposta

1

Você está tentando redirecionar o stdin de mail de duas origens de uma só vez:

  1. Primeiro você tem echo | mail , que liga o stdout do echo ao stdin do mail (via pipe), substituindo o stdin padrão (terminal);
  2. 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)
por 13.01.2017 / 13:18