Enviando emails em Perl

A forma mais comum de se enviar emails em Perl é usando o Net::SMTP, mas este não tem muitos recursos. Já em plataformas UNIX/Linux podemos enviar emails em massa, com anexo e até anonimamente, neste artigo mostrarei como.

[ Hits: 35.969 ]

Por: Felipe em 02/11/2008


Nova lib: /usr/lib/sendmail



Agora para nós podermos "brincar" mais com os emails em Perl, vamos usar um lib local dos sistemas Gnu/Linux: /usr/lib/sendmail.

Obs.: As 3 sources que vou usar não são minhas, porém vou modificá-las na explicação e deixarei igual a original na source completa.

Roteiro:
  • Enviar email com anexo;
  • E-mails em massa;
  • Enviando emails anonimamente.

Enviar email com anexo

Interpretador & módulos:

#!/usr/bin/perl
use MIME::Entity; #este é um módulo de codificação que neste script será usado com base 64

Cabeçalho:

$top = build MIME::Entity From => 'Root <root>',
To => 'user@host', #aqui é o destinatário
Subject => "título/assunto", #o título/assunto do email
Data => $txt1; #aqui é a mensagem, que neste caso está na variável txt1

Variável:

$txt1 = &#8220;esta não é a mensagem original”; #aqui no caso seria a mensagem que o programa vai mandar

Anexo:

#Aqui começa o anexo
$top->attach(
   Name => “nome.extensão”, #aqui você vai por o nome e a extensão do arquivo
   Path => “/diretório/nome.extensão”, #caminho do arquivo
   # Se o anexo for compactado
   #Type => “application/x-gtar”, #se o arquivo for compactado usará /x-gtar, perceba que o type está com um "#" antes. É porque o arquivo não está compactado, o "#" torna o comando inútil
   Encoding => “base64″ #a codificação do arquivo
);

Enviando:

# Agente MTA do seu servidor
open(MAIL,&#8221;| /usr/lib/sendmail -t”); #chama a lib citada no começo
$top->print(\*MAIL);
close(MAIL);

Código completo:

#!/usr/bin/perl
use MIME::Entity;

$txt1 = &#8220;O servidor de backup realizou o backup com sucesso,em anexo o script de backup !”;

$top = build MIME::Entity From => &#8216;Root <root>’,
To => &#8217;suporte@domain’,
Subject => &#8220;[Backup-Empresa] Confirmação do Backup “,
Data => $txt1;


$top->attach(
   Name => &#8220;algumacoisaExemplo.sh”,
   Path => &#8220;/diretório/algumacoisaExemplo.sh”,
   # Se o anexo for compactado
   #Type => “application/x-gtar”,
   Encoding => &#8220;base64″
);


open(MAIL,”| /usr/lib/sendmail -t”);
$top->print(\*MAIL);
close(MAIL);

No caso ele simulou o backup dos arquivos de uma empresa, o que é uma ótima função para este script.

Página anterior     Próxima página

Páginas do artigo
   1. Básico: Net::SMTP
   2. Nova lib: /usr/lib/sendmail
   3. E-mails em massa com Perl
   4. Enviando emails anonimamente com Perl
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Catalyst Framework Perl (parte 1)

Módulos de Web no Perl

Trabalhando com arquivos no Perl

Configurando OTRS com PSGI/Plack e executando com Starman

Gerenciando redes com Perl e SNMP

  
Comentários
[1] Comentário enviado por QuestLoder em 03/11/2008 - 08:35h

Show de bola,
Estava procurando um artigo assim, parabens...


vou testar
Abraço.

[2] Comentário enviado por dailson em 04/11/2008 - 16:45h

Amigo. Já uso o perl para enviar emails via linha de comando, porém tenho uma dificuldade e gostaria de saber se você pode me ajudar.
Toda vez que acentuo um caracter no Subject, chega errado em alguns clientes de email como o hotmail.
No corpo da mensagem ocorre tudo bem. Como faço para colocar acentuação no subject ??

[3] Comentário enviado por Cooler_ em 04/11/2008 - 16:51h

meus parabens Brother
cada dia melhor em
um salve ai

[4] Comentário enviado por perserktor em 04/05/2009 - 18:48h

apenas acrescentando, caso queria utilizar outro servidor SMTP, pois hotmail por exemplo barra envio se o seu smtp não for um SMTP valido.

O grande x da questão é que servidores de e-mail como o do G-Mail usam autenticação "SSL" ou "TLS" para usa-los vc deve utilizar modulos específicos.

Segue o exemplo de envio utilizando o smtp do Ggmail,

use Net::SMTP::TLS;
use IO::Socket::INET;

# Pega o domain host
use Net::SMTP;
my $domain = Net::SMTP->new('smtp.gmail.com', Timeout => 30);
my $domainhost = $domain->domain;
#configuração para conexão TSL
my $smtp = Net::SMTP::TLS->new('smtp.gmail.com',
Hello => $domainhost,
Port => 587,
User => 'seuemail@gmail.com',
Password => 'sua senha aki',
Timeout => 30,
Debug => 1,
);
#dados de envio do e-mail
$smtp->mail('remetente@dominio.com');
$smtp->to('destinatario@dominio.com');
#assunto e corpo da mensagem
$smtp->data();
$smtp->datasend ('From: tepego_na_curva@hotmail.com');
$smtp->datasend("\n");
$smtp->datasend('Subject: -----Seu Assunto Aki-------');
$smtp->datasend("\n");
$smtp->datasend("-----PENSE MUITO ANTES DE FAZER O MAL, POIS ELE VOLTARA PRA VOCÊ ----");
$smtp->dataend();
$smtp->quit;

Espero ter contribuido com o post de nosso amigo, e lembrem-se de usar este scrip de forma adequada. rs

[5] Comentário enviado por poetah em 10/10/2009 - 00:15h

pena que no gmail mesmo autenticando ele envia
com o nome de email padrao, sem ser fake!!!

bom artigo

[]'s

[6] Comentário enviado por BarbaNegra em 15/09/2010 - 19:04h

show de bola os tutoriais do Drake e do C00l3r salvam a pátria diariamente xD

[7] Comentário enviado por barao2011 em 09/01/2012 - 21:34h

como faz pra configurar esse envio com io ou dns reverso ????

[8] Comentário enviado por swit em 24/01/2012 - 12:59h

Ola eu estou tentando envia emails anonymos com a opção que vc descreveu porem ele nao envia gostaria de saber oque vc preciso configura pra consegui envia emails anonymos em massa?

[9] Comentário enviado por joaorubens em 03/03/2013 - 20:58h

cara com o pouco que já consegui entender sobre o assunto, esse seu post ta otimo e vou testar, mas se puder me responder antecipadamente quero saber se posso substituir isso (------$smtp->to('c00l3r@hotmail.com');------) por um arquivo com uma lista como vi em um video no youtube http://www.youtube.com/watch?v=A7Ye1sHjLRE

e a mensagem tambem posso substituir por um arquivo?
se quiser visitar meu poste, tem um script que fiz mas não conseui usar
vivaolinux.com.br/topico/vivaolinux/Como-enviar-email-via-SSH

valeu, abraço.

[10] Comentário enviado por mauriliovilela em 17/01/2015 - 14:04h

Não estou conseguindo mais enviar emails através deste script, o script roda legal, faz tudo certinho, mas o email não chega.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts