Magago 0 Denunciar post Postado Dezembro 17, 2011 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
Fvox 0 Denunciar post Postado Dezembro 19, 2011 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
Magago 0 Denunciar post Postado Dezembro 24, 2011 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