Pular para o conteúdo

Envio de email via console

Este script envia email a partir do console.

Sintaxe:

./email.sh assunto texto-do-email arquivo-anexo
Ivan Moretto ivanxmoretto
Hits: 37.417 Categoria: Shell Script Subcategoria: Avançado
  • Download
  • Nova versão
  • Indicar
  • Denunciar

Descrição

Este script envia email a partir do console.

Sintaxe:

./email.sh assunto texto-do-email arquivo-anexo
Download 4170.email.sh Enviar nova versão

Versões atualizadas deste script

Tacio de Jesus Andrade

Versão 2 enviada 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

Criar usuários com ponto (nome.usuario) no Slackware

Cria relatorio de email enviados e recebidos

Barra de Progresso com Shell Script

Script Administração SquidFacil Ubuntu 11.10

Agenda de Contatos - Shell Script + MYSQL

#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

Entre na sua conta para comentar.