Envio de email via console

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

[ Hits: 36.928 ]

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

Trocando plano de fundo no flux de forma gráfica

Restaurar backup de uma conta cpanel mesmo que ela já exista

TCPDump do Dia

Simples inventário de máquinas em Shell Script

Instalar o Navegador Tor em qualquer distribuição Linux


  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts