Este tópico muito antigo mostra como usar uuencode e ssmtp para enviar um e-mail com anexo de um script bash.
Criei este script de teste para depurar:
#!/bin/bash
set -x
NOW=$( date '+%F' ) #( date '+%F_%H-%M-%S' )
LOGPATH=/home/pi/logs
LOGFILE=test-log-$NOW.txt
FULL_LOG=$LOGPATH'/'$LOGFILE
echo "This is a test of the log email send $LOGPATH $LOGFILE $FULL_LOG " > $FULL_LOG
echo -e "To: [email protected]\nSubject: test log send\n\n" | (cat - && /usr/bin/uuencode $FULL_LOG) | /usr/sbin/ssmtp -t
A saída se parece com isso:
+ echo 'This is a test of the log email send /home/pi/logs test-log-2025-02-22.txt /home/pi/logs/test-log-2025-02-22.txt '
+ echo -e 'To: [email protected]\nSubject: test log send\n\n'
+ cat -
+ /usr/sbin/ssmtp -t
+ /usr/bin/uuencode /home/pi/logs/test-log-2025-02-22.txt
Nenhum erro ocorre, e um e-mail é entregue com o assunto para o endereço correto. O problema é que o anexo do e-mail é entregue como um arquivo chamado
homepilogstest-log-2025-02-222.txt
O anexo é um arquivo de comprimento zero. O arquivo é criado corretamente no Pi e contém o conteúdo esperado:
$ ls -l logs/test-log-2025-02-22.txt
-rw-r--r-- 1 pi pi 116 Feb 22 12:19 logs/test-log-2025-02-22.txt
$ cat logs/test-log-2025-02-22.txt
This is a test of the log email send /home/pi/logs test-log-2025-02-22.txt /home/pi/logs/test-log-2025-02-22.txt
O que estou perdendo?
Com apenas um parâmetro
uuencode
você está especificando o nome do arquivo de saída .Então esta seção
não fará o que você espera e resultará em um arquivo de comprimento zero.
Você precisa especificar o nome do arquivo de entrada e o nome do arquivo de saída se não quiser usar o programa como filtro.
Você provavelmente não deve especificar o caminho completo para o arquivo de saída, de qualquer forma, então a parte uuencode pode ser melhor como
uuencode
é um tipo de conserto. Se você precisa de algo que simplesmente funcione , recomendo o uso dos-nail
programa. Ele tem um switch-a
especialmente para enviar arquivos.Sobre
Debian/Ubuntu
derivativos:E
LESS='+/^ +-a file' man s-nail
Exemplo:
E por último, mas não menos importante, não
ssmtp
é mais mantido .Melhor usar
msmtp
em vez disso.