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: 68.803 ]

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


Exemplos práticos



Enviando uma mensagem para um e-mail:

$ sendEmail -f [email protected] -t [email protected] -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 [email protected] -t [email protected] [email protected] -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 [email protected] -t [email protected] -bcc [email protected] [email protected] [email protected] -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 [email protected] -t [email protected] -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 [email protected] -t [email protected] -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 [email protected] -t [email protected] -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

Docker: Uma abordagem didática para tempos obscuros

Access Point com cartão Atheros em Slackware 12.0

Quando próximo, finja estar longe; quando longe, finja estar próximo

Obtendo TimeStamps da Blockchain com OpenTimestamps

Impedindo o compartilhamento de conexão

Leitura recomendada

SlackwareBOX MTA

Instalando MTA Sceo no FreeBSD 7.1

Configurando servidor IMAP

Relay autenticado para Postfix no Debian

Postfix fazendo relay SMTP do Gmail/Google Apps

  
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 [email protected]@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:

[email protected]:/home/markin# sendEmail -f [email protected] -t [email protected] -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:

[email protected]:/home/markin# sendEmail -f [email protected] -t [email protected] -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 [email protected] -t [email protected] -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 [email protected] -t [email protected] -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