Envio de email via console

Publicado por Ivan Moretto (última atualização em 16/09/2010)

[ Hits: 31.585 ]

Download 4170.email.sh

Download enviaEmail.sh (versão 2)




Este script envia email a partir do console.

Sintaxe:

./email.sh assunto texto-do-email arquivo-anexo

  



Versões atualizadas deste script

Versão 2 - Enviado por Tacio de Jesus Andrade em 12/09/2010

Changelog: Eu fiz uma pequena modificação, adicionando também a opção para enviar um arquivo em anexo, sei que é uma "besteira", porem para mim vai ajudar e muito.


Abraço.

Download enviaEmail.sh


Esconder código-fonte

#!/bin/bash


# Para a senha não ficar exposta recomendo usar o shc para gerar executavel binario deste script.
# Artigo em http://www.vivaolinux.com.br/dica/SHC-Compilando-seu-shell-script 
# Publicado por http://www.vivaolinux.com.br/perfil/verPerfil.php?login=tarcio


EMAIL_FROM="usuario@ymail.com"  # usuario de email que se autentica no servidor SMTP
EMAIL_TO="destino@provedor.com.br" # usuario que receberá os emails

#Servidor SMTP e porta utilizada 
SERVIDOR_SMTP="smtp.mail.yahoo.com.br:587" #endereço no servidor SMTP, observar no exemplo o yahoo utiliza a porta 587
SENHA=senha    #informe aqui a senha de autenticação no servidor SMTP

ASSUNTO="$HOSTNAME - $1"
MENSAGEM=$2

if [ "$1" == "" ] ;then
   ASSUNTO="SEM ASSUNTO"
fi
if [ "$2" == "" ] ;then
   MENSAGEM="SEM MENSAGEM"
fi
if [ "$3" != "" ] ;then
   MENSAGEM="$2  `cat $3`"
fi



sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "$ASSUNTO" -m "$MENSAGEM" $ANEXO -s $SERVIDOR_SMTP -xu $EMAIL_FROM -xp $SENHA

Scripts recomendados

Manutenção básica em partições Linux

Administração de Usuários

Instalação e configuração do celular Nokia 6670 no Ubuntu 8.10

Script para compilação manual do nessus

rc.firebird - corrigido


  

Comentários
[1] Comentário enviado por markintux em 13/09/2009 - 19:08h

ainda não testei seu script mas bem legal cara! Parabéns!

Escrevi um artigo sobre o sendEmail para quem quiser acompanhar e entender melhor como funciona, colocando arquivos para enviar no e-mail e muito mais opções.

http://www.vivaolinux.com.br/artigo/Enviando-emails-pelo-terminal/

Abraços!

[2] Comentário enviado por hmweb em 01/07/2010 - 16:06h

muito simles e funcional seu script, eu apenas aleterei um item criei uma variavel para o usuario de autenticaçao para que se possa enviar email com um usuario atenticado e o endereço que vai no email outro.
no meju caso usei para um script de ackup

ex: aparece para o clietne backup@emresa.com.br mas o usuario real que autentica no servidor e sender@empresa.com.br
ficou assim
EMAIL_FROM="backup@minhaempresa.com.br" # usuario de email que se autentica no servidor SMTP
EMAIL_TO="propietario@minhaempresa.com.br;ti@minhaempresa.com.br" # usuarios que receberao emails (separados por ;)

#Servidor SMTP e porta utilizada
SMTP_USER="sender@empresa.com.br"
SERVIDOR_SMTP="smtp.empresa.com.br:25" #endereçno servidor SMTP, observar no exemplo o yahoo utiliza a porta 587
SENHA=******** #informe aqui a senha de autenticaç no servidor SMTP

ASSUNTO="$HOSTNAME - $1"
MENSAGEM=$2

if [ "$1" == "" ] ;then
ASSUNTO="SEM ASSUNTO"
fi
if [ "$2" == "" ] ;then
MENSAGEM="SEM MENSAGEM"
fi
if [ "$3" != "" ] ;then
MENSAGEM="$2 `cat $3`"
fi



sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "$ASSUNTO" -m "$MENSAGEM" $ANEXO -s $SERVIDOR_SMTP -xu $SMTP_USER -xp $SENHA


Espero que gostem ;)

[3] Comentário enviado por livyorocha em 04/01/2012 - 11:49h

Bom dia,

A parte que envia o anexo não está funcionando alguém pode clarear as idéias ?
A final qual o arquivo vai ser enviado ?

[4] Comentário enviado por ivanxmoretto em 05/01/2012 - 08:43h

Bom dia livyorocha,
Quando se utiliza o 3o parametro ($3), que é o anexo, o script checa e se ele for diferente de "", o conteúdo do anexo é adicionado ao corpo da mensagem (cat $3), a variável $ANEXO na verdade está sem função no script.
E se vc verificar o help do sendEmail não existe opção de enviar um anexo, por isso listo o conteúdo do anexo no corpo da mensagem.

[5] Comentário enviado por livyorocha em 10/01/2012 - 17:29h

mais um duvida:

Eu vou definir que meu arquivo e log do backup vai ficar /home/linux/envio/backup.log como eu coloco para ficar o conteudo desse arquivo no corpo do e-mail ??


[6] Comentário enviado por ivanxmoretto em 11/01/2012 - 06:55h

caro livyorocha, vc tem que passar o arquivo como 3o parametro, ex:

email.sh "AQUI VAI O ASSUNTO" "AQUI VAI A MENSAGEM" /home/linux/envio/backup.log

[7] Comentário enviado por jeffersonsamaral em 29/06/2012 - 09:09h

Caro Tacio de Jesus Andrade, não estou conseguindo rodar o enviaEmail por qualquer tipo de automação, tipo cron. Se eu o executo manualmente ele funciona, porem por agendamento não envia. Você tem uma noção do que possa ser ?

Obrigado.

[8] Comentário enviado por rodpas em 03/08/2012 - 09:32h

Bom dia estou com mesmo problema do jeffersonsamaral se executo ele manualmente funciona perfeitamente....mas se executo pelo crontab ele tambem executa todas as funções recebo o email...porem os campos "ASSUNTO" E "MENSAGEM" ele não traz...tem alguma idéia sobre????

[9] Comentário enviado por rodpas em 03/08/2012 - 12:24h

Segue scrip que funciona perfeitamente e deu certo no crontab.....!!!!!

################################################################
#!/bin/bash

INICIO=`date +%d/%m/%Y-%H:%M:%S`
LOG=/var/log/`date +%Y-%m-%d`log.txt

echo " " >> $LOG
echo " " >> $LOG
echo "|-----------------------------------------------" >> $LOG
echo " Sincronização iniciada em $INICIO" >> $LOG


rsync -avz /root/ IP::raiz/ >> $LOG
FINAL=`date +%d/%m/%Y-%H:%M:%S`


echo " Sincronização Finalizada em $FINAL" >> $LOG
echo "|-----------------------------------------------" >> $LOG
echo " " >> $LOG
echo " " >> $LOG


# Envia e_mail Backup Realizado com Sucesso
#
EMAIL_FROM="meue_mail" # usuario de email que se autentica no servidor SMTP
EMAIL_TO="parae_mail" # usuarios que receberao emails (separados por ;)

#Servidor SMTP e porta utilizada
SMTP_USER="meue_mail"
SERVIDOR_SMTP="Servidor smtp:25" #endereco servidor SMTP
SENHA=******** #informe aqui a senha de autenticacao no servidor SMTP

ASSUNTO="$HOSTNAME - $1"
MENSAGEM="$2"

[ "$1" ] || ASSUNTO="ASSUNTO"
[ "$2" ] || MENSAGEM="MENSAGEM"
[ "$3" ] && MENSAGEM="$2 `cat $3`"


sendEmail -f $EMAIL_FROM -t $EMAIL_TO -u "$ASSUNTO" -m "$MENSAGEM" -a $ANEXO -s $SERVIDOR_SMTP -xu $SMTP_USER -xp $SENHA

[10] Comentário enviado por esresende em 26/08/2014 - 01:16h

Amigos, boa noite. Estou precisando imensamente de enviar e-mail após a execução de um script. Ao executar o script dava um erro na última linha, então instalei o sendEmail e agorea dá o seguinte erro:

invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 332

e o email não envia.

alguém pode ajudar? grato.



[11] Comentário enviado por bred66 em 22/07/2016 - 15:18h

Caros amigos estou tendo esse erro como retorno:

sendEmail[10082]: ERROR => TLS setup failed: SSL connect attempt failed error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

o e-mail não envia

[12] Comentário enviado por lucascatani em 10/10/2018 - 13:44h

Excelente POST, salvo nos favoritos.


Contribuir com comentário