Enviando e-mail pelo shell com smtp remoto

O SendEmail é um cliente smtp em Perl script. Neste artigo vamos ver suas principais aplicações práticas.

[ Hits: 71.583 ]

Por: Carlos Affonso Henriques. em 22/11/2007


Exemplos práticos



Enviando uma mensagem para um e-mail:

$ sendEmail -f meuemail@meudominio.com.br -t email_destinatario@dominiodedestino.com.br -u "Subject entre aspas" -m "Mensagem de teste entre aspas" -s smtp.meudominio.com.br:25 -xu meuemail -xp minhasenha

Enviando uma mensagem para múltiplos e-mails:

$ sendEmail -f meuemail@meudominio.com.br -t email_destinatario@dominiodedestino.com.br outrodestinatario@outrodominio.org -u "Subject entre aspas" -m "Mensagem de teste entre aspas" -s smtp.meudominio.com.br:25 -xu meuemail -xp minhasenha

O SendEmail também permite o envio em cc e bcc para múltiplos emails, bastando para isso após a chave -bcc acrescentar os emails para que se deseja enviar mensagens em bcc. Ex:

$ sendEmail -f meuemail@meudominio.com.br -t email_destinatario@dominiodedestino.com.br -bcc outrodestinatario@outrodominio.org segundodestinatario@segundodominio.com terceirodestinatario@terceirodominio.net -u "Subject entre aspas" -m "Mensagem de teste entre aspas" -s smtp.meudominio.com.br:25 -xu meuemail -xp minhasenha

Enviando mensagem com arquivos anexados:

$ sendEmail -f meuemail@meudominio.com.br -t email_destinatario@dominiodedestino.com.br -u "Subject entre aspas" -m "Mensagem de teste entre aspas" -a /etc/dhcpd.conf /etc/lilo.conf /etc/squid/squid.conf -s smtp.meudominio.com.br:25 -xu meuemail -xp minhasenha

Enviando o conteúdo de um arquivo como mensagem:

$ sendEmail -f meuemail@meudominio.com.br -t email_destinatario@dominiodedestino.com.br -u "Subject entre aspas" -o message-file=/etc/passwd -a /etc/dhcpd.conf /etc/lilo.conf /etc/squid/squid.conf -s smtp.meudominio.com.br:25 -xu meuemail -xp minhasenha

Neste exemplo estamos enviando o conteúdo do arquivo /etc/passwd como sendo o corpo da mensagem e enviando os arquivos /etc/dhcpd.conf, /etc/lilo.conf e /etc/squid/squid.conf como anexos.

$ sendEmail -f meuemail@meudominio.com.br -t email_destinatario@dominiodedestino.com.br -u "O subject é a saída do comando date `date`" -o message-file=<(ifconfig ppp0) -a /etc/dhcpd.conf /etc/lilo.conf /etc/squid/squid.conf -s smtp.meudominio.com.br:25 -xu meuemail -xp minhasenha

O shell Bash permite que uma saída stdout possa ser interpretada como um arquivo texto, no caso acima a saída do comando ifconfig é enviada no corpo da mensagem como sendo o conteúdo de um arquivo texto. Notem também que no subject coloquei o comando date entre apóstrofos, neste caso ele dará ao subject a saída do comando date. Atentem que o corpo da mensagem será a saída do comando ifconfig.

Conclusão

Sua simplicidade e total integração com o shell lhe conferem uma enorme gama de aplicações práticas, integrado com um agendador de tarefas como o cron por exemplo, pode lhe fornecer em intervalos regulares todo o tipo de informações acerca do status de seu servidor ou estações sendo o limite somente a inventividade do administrador.

Bom trabalho a todos.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Exemplos práticos
Outros artigos deste autor

Reconhecimento de placas de veículos com OpenALPR

Obtendo TimeStamps da Blockchain com OpenTimestamps

Administrando usuários no GNU/Linux e Samba via web com PHP

SSHFS no CentOS, Slackware e Windows - Simples e rápido

Debian sem Systemd

Leitura recomendada

Evosign - Adicionar assinatura automática ao Evolution

Servidor de email + webmail no OpenSuSE 10.2

Servidor de e-mails vinculado ao AD (Postfix + Courier)

Qmail + Patches + Performance Tuning, the Debian AMD64 way

Openfire no SLES 10 autenticando no Active Directory

  
Comentários
[1] Comentário enviado por vhprice em 22/11/2007 - 13:38h

100%!

Parabens!

[2] Comentário enviado por exercitobr em 22/11/2007 - 15:44h

Estava atrás desse tipo de informação. Parabéns!

[3] Comentário enviado por dailson em 28/11/2007 - 12:27h

Testei mas tenho o mesmo problema que tenho com os clientes de email do linux.
Como faço para enviar um email HTML pra um cliente.
Quando anexo o fonte.hmtl ao invés de ser exibido o email no cliente, é exibido o código fonte.
Como fazer?

[4] Comentário enviado por capitainkurn em 30/11/2007 - 08:15h

Amigo, eu particularmente abomino e-mails em html, não testei esta possibilidate mas em princípio você deveria enviar o seu fonte.html como corpo da mensagem e não anexo como você afirmou. Há uma explicação de como fazer isso na seção exemplos práticos do artigo.

Grande abraço!

[5] Comentário enviado por andrade-pr em 17/02/2008 - 23:34h

Parabéns amigo.

Seu artigo é simplesmente fantástico.
Estava a procura de um script que fizesse o serviço de envio de e-mail sem a necessidade de instalar um MTA.
E esse funciona mesmo.
Simplesmente nota 10. Parabéns novamente.

Abraço.

[6] Comentário enviado por jmbarros em 07/05/2008 - 19:11h

Muito bom... muito bom mesmo...so não consegui fazer o sendEmail pegar o destinatário de um aquivo texto ou de uma variável...tem uma idéia?

[7] Comentário enviado por jmbarros em 07/05/2008 - 19:35h

Opa... desculpa ai... sono e muito café resultam nisso... é so colocar a variavel...me perdoem ...fica ssim

sendemail -f mail -t $1 -u "teste" -m "mensagem de teste" -s smtp -xu user -xp pass

[8] Comentário enviado por paulopugin em 08/05/2008 - 17:58h

Opá, estou tentando usar os comando mas estou tendo problemas com todas as contas de email que eu tentei usar

com o Gmail deu o seguinte erro:
May 08 17:51:49 suporte sendEmail[14421]: NOTICE => Authentication not supported by the remote SMTP server!
May 08 17:51:49 suporte sendEmail[14421]: ERROR => Received: 530 5.7.0 Must issue a STARTTLS command first. q19sm3263468qbq.30


com o hotmail deu este :
May 08 17:53:59 suporte sendEmail[14451]: ERROR => Connection attempt to smtp.hotmail.com:25 failed: IO::Socket::INET: Bad hostname 'smtp.hotmail.com'

com o excite este:
May 08 17:54:43 suporte sendEmail[14462]: ERROR => Received: 535 Error: authentication failed


em outro aqui:
May 08 17:57:40 suporte sendEmail[14523]: ERROR => Connection attempt to smtp.mail.tecla.com.br:110 failed: IO::Socket::INET: Bad hostname 'smtp.mail.tecla.com.br'


alguém pode me ajudar??

[9] Comentário enviado por capitainkurn em 08/05/2008 - 21:26h

O que certamente está ocorrendo é que seu servidor smtp está com nome errado. experimente smtp.tecla.com.br ou mail.tecla.com.br ou entre em contato com o suporte do provedor.

[10] Comentário enviado por Lima2008 em 12/05/2008 - 12:22h

?comentario=Era exatamente oque eu procurava para backup de clientes. funcionou perfeitamente, Obrigado.

[11] Comentário enviado por removido em 28/05/2008 - 10:32h

alguem ae conseguiu funcionar??? tudo q eu ponho acaba com o msm erro do amigo ae de cima... alguem pode me ajudar?? to precisando bastante desse serviço...

[12] Comentário enviado por removido em 28/05/2008 - 10:34h

com o hotmail eu tentei.. dei uma pesquisada e vi que ele não tinha o serviço de smtp... agora tentei com o do gmail, no qual todos afirmam que tem.. e a mensagem de erro é essa:

May 28 10:33:18 markin-laptop sendEmail[28416]: NOTICE => Authentication not supported by the remote SMTP server!
May 28 10:33:18 markin-laptop sendEmail[28416]: ERROR => Received: 530 5.7.0 Must issue a STARTTLS command first. 5sm21495364ywl.4

alguem ae pode me ajudar??

[13] Comentário enviado por removido em 28/05/2008 - 10:50h

tentei agora com um servidor que existe smtp e que a empresa aqui usa.. está tudo certo.. mas aparece o seguinte erro:

May 28 10:46:51 markin-laptop sendEmail[9103]: ERROR => Received: 501 #5.5.4 cannot decode AUTH parameter meuemail@meudominio.org.brmeuemail@meudominio.

??

[14] Comentário enviado por Lima2008 em 28/05/2008 - 16:08h

Coloque o comando que enviou, sem ver oque está fazendo não sei como lhe ajudar, adianto que aqui fiz funcionar com o gmail e com o yahoo, ambos funcionam perfeitamente, embora o gmail bloqueie anexos com extenção .tar.gz

[15] Comentário enviado por removido em 28/05/2008 - 16:48h

Lima... desculpa.. tá ae o erro:

root@markin-laptop:/home/markin# sendEmail -f atpmarkin@yahoo.com.br -t xmarkinx@hotmail.com -u "Subject" -m "Mensagem Teste" -s smtp.mail.yahoo.com.br:25 -xu atpmarkin -xp 12345678
May 28 16:45:21 markin-laptop sendEmail[18862]: ERROR => Received: 535 authorization failed (#5.7.0)

tentei de outra forma:

root@markin-laptop:/home/markin# sendEmail -f atpmarkin@yahoo.com.br -t xmarkinx@hotmail.com -u "Subject" -m "Mensagem Teste" -s mail.yahoo.com.br:25 -xu atpmarkin -xp 12345678
May 28 16:47:27 markin-laptop sendEmail[19934]: ERROR => Timeout while connecting to mail.yahoo.com.br:25 There was no response after 60 seconds.

vlw pela atenção...
fico no aguardo!

[16] Comentário enviado por Lima2008 em 28/05/2008 - 17:12h

entendi, mas no site do yahoo você habilitou para acesso pop? Se não fez é esse o motivo do erro, porque aparentemente oque está fazendo está correto.

[17] Comentário enviado por removido em 29/05/2008 - 07:40h

Nossa cara!!! vlw ae!! era isso mesmo brow!!! Resolvido o problema!! com o email do yahoo mandei sussa!!!! vlw msm lima!! =D

[18] Comentário enviado por paulopugin em 12/06/2008 - 16:49h

Pessoal,
qual a sintaxe que vocês usaram nos seus emails, aqui eu só consegui fazer funcionar no yahoo desta forma:
sendEmail -f meuusuario@yahoo.com.br -t email@destinatario.com.br -u "$assunto" -m "$mensagem" -s smtp.mail.yahoo.com.br:25 -xu meusuario -xp minhasenha

só com o yahoo eu consegui com mais nenhum outro.

[19] Comentário enviado por Lima2008 em 12/06/2008 - 18:34h

Testei tanto com o yahoo como com o Gmail, lembro que para usar tem que estar setada a opção de redirecionamento pop, caso contrario não funciona.

[20] Comentário enviado por eduardo_jst em 16/02/2009 - 09:52h

Vc conhece o help desk onerzero, vc sabe como eu faço para usar um script para enviar email com integração com o oneerzero e sendemail?

att

[21] Comentário enviado por capitainkurn em 16/02/2009 - 18:33h

Não faço a mínima idéia, só testando para ver mas estou sem tempo.

[22] Comentário enviado por bbgshow em 13/07/2009 - 17:59h

ei alguém pode me ajudar é q to tentando usar o comando como disseram mas ñ tá indo demora demais e não sai disso, depois q to enter no comando
- comando q coloquei foi este:

sendmail -f daniel@universalrn.com.br -t doliveira@universalrn.com.br -u "Subject entre aspas" -m "isso e so um teste" -s smtp.universalrn.com.br:25 -xu usuario -xp "minha senha"

[23] Comentário enviado por renato.v em 17/08/2011 - 12:48h

bbgshow, você está usando o comando errado, não é "sendmail" mas sim "sendemail". Aliás, aqui está tudo funcionando perfeitamente usando minha conta do YAHOO e o endereço "smtp.mail.yahoo.com.br:25" para SMTP.

[24] Comentário enviado por renato.v em 17/08/2011 - 12:50h

Alguém conheceria uma ferramenta semelhante ao "sendEmail" descrito no artigo, mas que faça o inverso? Ou seja, em vez de enviar e-mails via SMTP pelo shell, estou atrás de uma ferramenta que receba e-mails via POP3. Alguém conhece?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts