Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Magago

Perl

Recommended Posts

O que está de errado neste código ?

 

#!/usr/local/bin/perl
use MIME::Base64;
use Net::SMTP::SSL;
my ($servidorsmtp,$usuariosmtp,$senhasmtp) = ('send@x.com', 'abcdefg');
my ($nomeremetente,$emailremetente) = ('', 'odkasodsa@x.com');
my ($nomedestinatario,$emaildestinatario) = ('', 'email@gmail.com');
my $assunto = 'teste ando';
my $emailresposta = 'ml@x.com';
my $corpo = 'texto';
my $dominiohello = 'x.com';
my $enviador;
if (not $enviador = Net::SMTP::SSL->new($servidorsmtp,  
Hello   =>      $dominiohello,  
Port    =>      465,  
Debug    =>      1)) { 
die "Nao foi possivel conectar\n";
}
open(FOO, corpo.html);
@foo = <FOO>;
$corpo = join("\n", @foo);
open (BANDFIT, "list.txt") || die "Nao foi possivel abrir a lista";
$cont=0;
while(<BANDFIT>) {
my $ID = $_;


foreach ($ID) {
$emaildestinatario = $ID;
$usuariocriptografado = encode_base64("\00".$usuariosmtp."\0".$senhasmtp);
$enviador->datasend("AUTH PLAIN " . $usuariocriptografado);
$enviador->mail($emailremetente);
$enviador->to($emaildestinatario);
$enviador->data();
@meses = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
@diasdasemana = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
($segundo, $minuto, $hora, $diadomes, $mes, $ano0, $diadasemana, $diadoano, $dlsgs) = localtime();
$ano = 1900 + $ano0;
$enviador->datasend('From: "' . $nomeremetente . '" <' . $emailremetente . '>' . "\n");
$enviador->datasend('To: "' . $nomedestinatario . '" <' . $emaildestinatario . '>' . "\n");$enviador->datasend('Subject: ' . $assunto . "\n");
if (length($diadomes) == 1) {
my $diadomes = '0' . $diadomes;
}
if (length($hora) == 1) {
my $hora = '0' . $hora;
}
if (length($minuto) == 1) {
my $minuto = '0' . $minuto;
}
if (length($segundo) == 1) {
my $segundo = '0' . $segundo;
}
$enviador->datasend("Date: $diasdasemana[$diadasemana], $diadomes $meses[$mes] $ano $hora:$minuto:$segundo -0600\n");
$enviador->datasend('MIME-Version: 1.0' . "\n");
my ($bi, $bn, @bchrs);
my $boundry = "";
foreach $bn (48..57,65..90,97..122) {
$bchrs[$bi++] = chr($bn);
}
foreach $bn (0..28) {
$boundry .= $bchrs[rand($bi)];
}
$enviador->datasend("Content-Type: multipart/alternative; boundary=\"$boundry\"\n");
$enviador->datasend("Reply-To: " . $emailresposta . "\n\n");
$enviador->datasend("\nThis is a multi-part message in MIME format.\n");
$enviador->datasend("\n--$boundry\n");
$enviador->datasend("Content-Type: text/html; charset=ISO-8859-1\n");
$enviador->datasend("Content-Transfer-Encoding: 8bit\n");
$enviador->datasend("\n $corpo \n\n");
$enviador->datasend("\n--$boundry--\n\n"); 
$enviador->dataend;
$enviador->quit;
$cont=$cont+1;
printf "$cont Enviado para $emaildestinatario \n";
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que erro deu aí?

 

EDIT: Fiz algumas correções de sintaxe no código... Segue:

 

#!/usr/bin/env perl
use strict;
use warnings;

use MIME::Base64;
use Net::SMTP::SSL;
my ($servidorsmtp,$usuariosmtp,$senhasmtp) = ('send@x.com', 'abcdefg');
my ($nomeremetente,$emailremetente) = ('', 'odkasodsa@x.com');
my ($nomedestinatario,$emaildestinatario) = ('', 'email@gmail.com');
my $assunto = 'teste ando';
my $emailresposta = 'ml@x.com';
my $corpo = 'texto';
my $dominiohello = 'x.com';
my $enviador;

if (
   not $enviador = Net::SMTP::SSL->new(
       $servidorsmtp,
       Hello   =>      $dominiohello,
       Port    =>      465,
       Debug   =>      1,
   )
) {
   die "Nao foi possivel conectar\n";
}
open(FOO, 'corpo.html');
my @foo = <FOO>;
$corpo = join("\n", @foo);
open(BANDFIT, "list.txt") || die "Nao foi possivel abrir a lista";
my $cont=0;
while(<BANDFIT>) {
   my $ID = $_;

   foreach ($ID) {
       $emaildestinatario = $ID;
       my $usuariocriptografado = encode_base64("\00".$usuariosmtp."\0".$senhasmtp);
       $enviador->datasend("AUTH PLAIN " . $usuariocriptografado);
       $enviador->mail($emailremetente);
       $enviador->to($emaildestinatario);
       $enviador->data();
       my @meses = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
       my @diasdasemana = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
       my ($segundo, $minuto, $hora, $diadomes, $mes, $ano0, $diadasemana, $diadoano, $dlsgs) =
         localtime();
       my $ano = 1900 + $ano0;
       $enviador->datasend('From: "' . $nomeremetente . '" <' . $emailremetente . '>' . "\n");
       $enviador->datasend(
           'To: "' . $nomedestinatario . '" <' . $emaildestinatario . '>' . "\n");
       $enviador->datasend('Subject: ' . $assunto . "\n");

       if (length($diadomes) == 1) {
           my $diadomes = '0' . $diadomes;
       }
       if (length($hora) == 1) {
           my $hora = '0' . $hora;
       }
       if (length($minuto) == 1) {
           my $minuto = '0' . $minuto;
       }
       if (length($segundo) == 1) {
           my $segundo = '0' . $segundo;
       }
       $enviador->datasend(
"Date: $diasdasemana[$diadasemana], $diadomes $meses[$mes] $ano $hora:$minuto:$segundo -0600\n"
       );
       $enviador->datasend('MIME-Version: 1.0' . "\n");
       my ($bi, $bn, @bchrs);
       my $boundry = "";
       foreach $bn (48..57,65..90,97..122) {
           $bchrs[$bi++] = chr($bn);
       }
       foreach $bn (0..28) {
           $boundry .= $bchrs[rand($bi)];
       }
       $enviador->datasend("Content-Type: multipart/alternative; boundary=\"$boundry\"\n");
       $enviador->datasend("Reply-To: " . $emailresposta . "\n\n");
       $enviador->datasend("\nThis is a multi-part message in MIME format.\n");
       $enviador->datasend("\n--$boundry\n");
       $enviador->datasend("Content-Type: text/html; charset=ISO-8859-1\n");
       $enviador->datasend("Content-Transfer-Encoding: 8bit\n");
       $enviador->datasend("\n $corpo \n\n");
       $enviador->datasend("\n--$boundry--\n\n");
       $enviador->dataend;
       $enviador->quit;
       $cont=$cont+1;
       printf "$cont Enviado para $emaildestinatario \n";
   }
}

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fvox, agora parou de dar erro, acho que era o servidor mesmo, mas me diz outra coisa, como eu faço pro script colocar < e > antes e depois do email automaticamente?

 

Minha lista de email está assim:

 

email@provedor.com.br

email@provedor.com.br

email@provedor.com.br

email@provedor.com.br

email@provedor.com.br

 

Sem virgula e sem o < e >, quero que o script leia a lista da forma que está e coloque o < e >

 

Segue o script atual:

 

#!/usr/local/bin/perl

use MIME::Base64;
use Net::SMTP::SSL;

#### Configs ####
my $corpo = 'corpo.html';
my $lista = 'list.txt';
my $envio = 0; ## 0 = smtp - 1 = sendmail

## Configuracao SMTP ##
my ($servidorsmtp,$usuariosmtp,$senhasmtp) = ('', '', '');
my $dominiohello = '';
##

## Configuracao SendMail ##
my $localsendmail = '/usr/lib/sendmail';
##

## Dados Email ##
my ($nomeremetente,$emailremetente) = ('xxx', 'xxx');
my $assunto = 'xxx';
my $emailresposta = 'xxx';
##
########

## Carregamento Corpo e Lista ##
open(FOO, $corpo) || die "Nao foi possivel abrir o html\n";
@foo = <FOO>;
$corpo = join("\n", @foo);

open (BANDFIT, $lista) || die "Nao foi possivel abrir a lista\n";
####

$cont=0;
system("rm enviados.txt");
system("rm naoenviados.txt");
while(<BANDFIT>) {
my $ID = $_;
foreach ($ID) {
$cont=$cont+1;
if ($ID =~ /<(.*)>/) {
$emaildestinatario = $1;
if ($ID =~ /<(.*)@(.*)>/) {

## Criacao Boundary ##
my ($bi, $bn, @bchrs);
my $boundry = "";
foreach $bn (48..57,65..90,97..122) {
$bchrs[$bi++] = chr($bn);
}
foreach $bn (0..28) {
$boundry .= $bchrs[rand($bi)];
}
####

## Data ##
@meses = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
@diasdasemana = qw(Sun Mon Tue Wed Thu Fri Sat Sun);
($segundo, $minuto, $hora, $diadomes, $mes, $ano0, $diadasemana, $diadoano, $dlsgs) = localtime();
$ano = 1900 + $ano0;
if (length($diadomes) == 1) {
my $diadomes = '0' . $diadomes;
}
if (length($hora) == 1) {
my $hora = '0' . $hora;
}
if (length($minuto) == 1) {
my $minuto = '0' . $minuto;
}
my $adesivodata = "$diasdasemana[$diadasemana], $diadomes $meses[$mes] $ano $hora:$minuto:$segundo -0600"; ## -0600: Fuso Horario
####

#### SMTP ####
if ($envio == 0) {

## Conexao ##
my $enviador;
if (not $enviador = Net::SMTP::SSL->new($servidorsmtp,  
Hello => $dominiohello,  
Port => 465,  
Debug => 1)) { 
die "Nao foi possivel conectar\n";
}
####

$usuariocriptografado = encode_base64("\00".$usuariosmtp."\0".$senhasmtp);

## Comunicacao ##
$enviador->datasend("AUTH PLAIN " . $usuariocriptografado);
$enviador->mail($emailremetente);
$enviador->to($emaildestinatario);
$enviador->data();
$enviador->datasend("From: \"$nomeremetente\" <$emailremetente>\n");
$enviador->datasend("To: $ID");
$enviador->datasend("Subject: $assunto\n");
$enviador->datasend("Date: $adesivodata\n");
$enviador->datasend("Importance: Normal\n");
$enviador->datasend("MIME-Version: 1.0\n");
$enviador->datasend("Content-Type: multipart/alternative; boundary=\"$boundry\"\n");
$enviador->datasend("Reply-To: <$emailresposta>\n\n");
$enviador->datasend("\nThis is a multi-part message in MIME format.\n");
$enviador->datasend("\n--$boundry\n");
$enviador->datasend("Content-Type: text/html; charset=ISO-8859-1\n");
$enviador->datasend("Content-Transfer-Encoding: 8bit\n");
$enviador->datasend("\n $corpo \n\n");
$enviador->datasend("\n--$boundry--\n\n");
$enviador->dataend;
$enviador->quit;
####

}
########

#### SendMail ####
if ($envio == 1) {
open(enviador,"|$localsendmail -t");
print enviador "From: \"$nomeremetente\" <$emailremetente>\n";
print enviador "To: $ID";
print enviador "Subject: $assunto\n";
print enviador "Date: $adesivodata\n";
print enviador "Importance: Normal\n";
print enviador "MIME-Version: 1.0\n";
print enviador "Content-Type: multipart/alternative; boundary=\"$boundry\"\n";
print enviador "Reply-To: <$emailresposta>\n\n";
print enviador "\nThis is a multi-part message in MIME format.\n";
print enviador "\n--$boundry\n";
print enviador "Content-Type: text/html; charset=ISO-8859-1\n";
print enviador "Content-Transfer-Encoding: 8bit\n";
print enviador "\n $corpo \n\n";
print enviador "\n--$boundry--\n\n"; 
close (enviador);
}
########

open (MEUARQUIVO, '>>enviados.txt');
print MEUARQUIVO "$cont Enviado para $emaildestinatario \n";
close (MEUARQUIVO); 
printf "$cont Enviado para $emaildestinatario \n";
}
else {
open (MEUARQUIVO, '>>naoenviados.txt');
print MEUARQUIVO "$cont Nao enviado para $emaildestinatario adicionar o email entre <>\n";
close (MEUARQUIVO); 
printf "$cont Nao enviado para $emaildestinatario adicionar o email entre <>\n";
}
}
else {
open (MEUARQUIVO, '>>public_html/naoenviados.txt');
print MEUARQUIVO "$cont Nao enviado para $emaildestinatario adicionar o email entre <>\n";
close (MEUARQUIVO); 
printf "$cont Nao enviado para $emaildestinatario adicionar o email entre <>\n";
}
}
}
close(BANDFIT);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.