suprimir e-mails em branco

3

Como faço para suprimir e-mails em branco? Por exemplo no exemplo a seguir, eu vou gostar de

some command | mail -s "tables altered on 'hostname'" [email protected]

Recebo a seguinte mensagem "depois de" enviar a mensagem:

Null message body; hope that's ok

Isso não está bem. Eu não quero enviar e-mails se não houver texto.

    
por shantanuo 07.03.2011 / 14:06

4 respostas

12
#!/bin/sh  

string='some command'
len=${#string} 
if [ "$len" -gt "0" ]
   then echo $string | mail -s "tables altered on 'hostname'" [email protected]
fi  

Isso enviará o e-mail apenas se a saída do comando tiver pelo menos um caractere, mas isso pode incluir espaços em branco, etc.

(A solução acima funciona, mas é desnecessária. man mail revela a opção -E):

some command | mail -E -s "tables altered on 'hostname'" [email protected]
    
por 07.03.2011 / 14:19
3

Eu uso o seguinte:

$ mail --exec 'set nonullbody' -s Test [email protected]

Que eu encontrei na documentação de correio GNU sob a seção nullbody .

    
por 28.10.2014 / 10:48
2

Versão de uma linha da resposta de SvenW (os creds devem ir até ele, não eu)

string='some command'; [ "$len" -gt "0" ] && ( echo $string | mail -s "tables altered on 'hostname'" [email protected] )
    
por 07.03.2011 / 16:50
0

exemplo:

echo -n "" | mail -E -s "Mensagem de Log" [email protected]

explique:

uma string vazia tem um caractere de endline, então temos que adicionar -n para excluir neste teste echo \ n (cr). Mas se a mensagem do seu corpo não estiver presente, o correio irá sair / parar de enviar.

fontes:

Por que o correio -E permite que eu envie mensagens vazias? link

    
por 13.09.2015 / 16:43