A maneira mais simples de enviar e-mail com anexo de imagem a partir da linha de comando usando o gmail?

3

Criando a postagem anterior, em que o requisito era fazer com que as tarefas do cron enviassem mensagens de status por meio de uma única linha de comando, conforme postadas aqui:

Mais simples maneira de enviar uma linha de email via linha de comando usando o Gmail?

Surgiu a questão de como usar uma única linha para enviar um arquivo de anexo.

Cenário:

o cron job gera o arquivo de saída da seguinte forma:

cd /home/pi/python
gnuplot plt12

o arquivo de programa plt12 inclui as seguintes duas linhas:

set output "pl12.png"
set terminal png font "arial,11"

Isso está sendo feito em um sistema Rpi3B conectado via USB a um Nano para o ADC que faz o registro de dados.

Então, a pergunta é, qual é a maneira mais fácil de enviar a imagem do arquivo de plotagem, usando uma única linha de comando, via gmail?

    
por SDsolar 22.07.2017 / 17:13

2 respostas

4

Com base nessa pergunta anterior referenciada no OP, a maneira mais fácil de enviar uma mensagem com uma única linha de comando é feita assim:

Mais simples maneira de enviar uma linha de email via linha de comando usando o Gmail?

EXCERTO:

Instale ssmtp com os seguintes comandos:

sudo apt-get update
sudo apt-get install ssmtp

Em seguida, vá para / etc / ssmtp e edite o ssmtp.conf para ficar assim:

root=rpi3abc@gmail
mailhub=smtp.gmail.com:465
FromLineOverride=YES
[email protected]
AuthPass=testing123
UseTLS=YES

Envie uma linha como esta:

echo "Testing...1...2...3" | ssmtp [email protected]

Quando a parte estiver completa, enviar um anexo com uma linha é igualmente simples.

Primeiro, instale mpack :

sudo apt-get update
sudo apt-get install mpack

então, seguindo o cenário de ter o arquivo pl12.png para enviar ao usuário [email protected], ele é realizado com a seguinte linha de comando:

mpack -s "12-Volt Battery Pack plot" /home/pi/python/pl12.png [email protected]

Se o arquivo estiver no diretório atual, não será necessário usar um caminho completo.

cron jobs sempre são executados no diretório inicial do usuário, portanto, é sempre uma boa prática usar um caminho de diretório completo para o arquivo anexo.

por 22.07.2017 / 17:13
5

com mutt :

SMTP_URL='smtps://user:[email protected]' mutt \
  -F /dev/null \
  -e 'set from="Me <[email protected]>"' \
  -e 'set smtp_url=$SMTP_URL' \
  -s 'pl12.png file' \
  -a pl12.png --  \
  [email protected] << EOM
Hi,

see pl12.png attached.

-- 
Me
EOM

Como todo código de shell, você sempre pode colocá-lo em uma linha se isso lhe agradar, mas isso não ajuda na legibilidade:

printf 'Hi,\n\nsee pl12.png attached\n\n-- \nMe\n' | SMTP_URL='smtps://user:[email protected]' mutt -F /dev/null -e 'set from="Me <[email protected]>"' -e 'set smtp_url=$SMTP_URL' -s 'pl12.png file' -a pl12.png  -- [email protected]
    
por 23.07.2017 / 11:48