Published:


Múltiplos envios de e-mails a partir de uma template Permalink

Quando realizamos procedimentos repetitivos no computador sempre da aquela sensação de que algo está errado, pois o computador existe exatamente para isso: repetir. Vou dar uma dica bem prática para quando queremos enviar individualmente emails para uma lista de pessoas trocando poucos elementos no corpo da mensagem. Esse é um típico exemplo de tarefa que existem muitas maneiras para automatizá-la e aqui optei por uma bem simplista, usando apenas o mutt e um pequeno script em shell. Começamos instalando o mutt:

sudo apt-get install mutt

Se você ainda não usa o mutt (deveria), segue uma configuração mínima, que deve estar em ~/.muttrc e que o torna capaz de enviar emails usando smtp:

set use_from=yes
set realname="Seção Xurepinhas Anônimos"
set from="exemplo@gmail.com"
set envelope_from=yes
set smtp_url="smtp://yourusername@smtp.example.com:587/"
set smtp_pass="Your1!Really2@AweSome3#Password"

A seguir temos um template de e-mail, chamado de email.txt, no qual queremos trocar apenas os valores __nome__ e __tamanho__ a depender do destinatário.

Prezado(a) __nome__

A Seção Xurepinhas Anônimos vem informar por meio deste a desativação 
do antigo sistema de armazenamento de arquivos. 
Seus arquivos totalizam `__tamanho__` GB e devem ser retirados imediatamente
do servidor central.

Atenciosamente,
Jéssica Xurepa

Na lista abaixo a primeira coluna corresponde a um número, que vamos injetar em __tamanho__. A segunda coluna é o nome da pessoa e a última coluna o(s) e-mails do destinatário.

46|Alexandre Pereira|ale@hotmail.com, alea@yahoo.com.br
40|Augusto Pimpolho|augusto@gmail.com, augu2@gmail.com
31|Maria Dantas|marimari@gmail.com

Por fim, o script.sh abaixo configura o delimitador da nossa lista para pipe, lê nosso template email.txt, faz as substituições necessárias e dispara os e-mails para cada pessoa da lista.txt.

#!/bin/bash
IFS="|"; 
while read f1 f2 f3; 
do 
  body=$(cat email.txt| sed "s/__nome__/$f2/g" | sed "s/__tamanho__/$f1/g")
  echo $body | mutt -s "URGENTE - Seus Arquivos Pessoais" $f3
done < lista.txt

Daqui para frente, basta adaptá-lo conforme suas necessidades.