Pause no envio de e-mails

1. Pause no envio de e-mails

CyberSpacer
mrcyberspacer

(usa Outra)

Enviado em 28/11/2012 - 15:35h

Tenho um script em perl de envio em massa de e-mails, quero colocar uma pause e time nele, o objetivo é que após x envios faça uma pausa e volte a enviar após y minutos.

Script:

#!/usr/local/bin/perl
## use: perl enviar.pl lista.txt "remetente@mail.com" "assunto" html.html

$ARGC=@ARGV;

if ($ARGC !=4) {

printf "$0 <mailist> <remetente> <assunto> <html.htm>\n\n";

#printf "Script de envio de e-mails";

exit(1);
}

$mailtype = "content-type: text/html";
$sendmail = '/usr/sbin/sendmail';
$sender = $ARGV[1];
$subject = $ARGV[2];
$efile = $ARGV[0];
$emar = $ARGV[0];
$count=1;
open(FOO, $ARGV[3]);
@foo = <FOO>;
$corpo = join("\n", @foo);

open (BANDFIT, "$emar") || die "Can't Open $emar";

while(<BANDFIT>) {


($ID,

$options) = split(/\|/,$_);

chop($options);

foreach ($ID) {

$recipient = $ID;

open (SENDMAIL, "| $sendmail -t");
print SENDMAIL "$mailtype\n";
print SENDMAIL "Subject: $subject\n";
print SENDMAIL "From: $sender\n";
print SENDMAIL "To: $recipient\n\n";
print SENDMAIL "$corpo\n\n";
close (SENDMAIL);

printf "Enviado para $recipient [ OK $count ]";
$count++;
}
}
close(BANDFIT);


  


2. Re: Pause no envio de e-mails

Sandro Marcell
smarcell

(usa Slackware)

Enviado em 28/11/2012 - 16:25h

Olha esse exemplo "tosco" no qual você pode se basear!

#!/usr/bin/env perl
sub mostraMensagem() {
while(1) {
sleep(1);
print("Hello World!\n");
$count++;

if($count == 5) {
print("PAUSA!\n");
$count = 0;
sleep(5);
print("CONTINUANDO...\n");
mostraMensagem;
}
}
}

mostraMensagem;


=)



3. Re: Pause no envio de e-mails

CyberSpacer
mrcyberspacer

(usa Outra)

Enviado em 28/11/2012 - 17:22h

smarcell escreveu:

Olha esse exemplo "tosco" no qual você pode se basear!

#!/usr/bin/env perl
sub mostraMensagem() {
while(1) {
sleep(1);
print("Hello World!\n");
$count++;

if($count == 5) {
print("PAUSA!\n");
$count = 0;
sleep(5);
print("CONTINUANDO...\n");
mostraMensagem;
}
}
}

mostraMensagem;


=)


Obrigado, não tenho nenhum conhecimento em perl, se poder adpatar a este script eu ficara muito agradecido!


4. tb nao consegui

Will silva
willsilva8611

(usa PCLinuxOS)

Enviado em 18/09/2014 - 14:58h

tb nao consegui =(
alguem pode ajudar?


5. Re: Pause no envio de e-mails

Daniel Vinciguerra
dvinciguerra

(usa Debian)

Enviado em 16/10/2015 - 08:01h


Pessoal,

Me dá uma vontade enorme de indicar o EV (metacpan.org/pod/EV) para vocês fazerem isso mas se vocês não conseguiram entender este código eu sugiro que vocês exercitem a logica de vocês antes....

Pra ajudar... segue o código comentado:


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

# loop infinito
my $count = 0;
while(1) {
# este é o primeiro comando de espera, onde 1 é o número
# em segundos que se quer aguardar
sleep(1);

############# SCRIPT AQUI ###############
print("Hello World!\n");

# count refere-se a quantidade de e-mail por vez que você
# quer enviar entre os intervalos
$count++;
if($count == 5) {
print("PAUSA!\n");
sleep(5);

# zera o contador para a coisa toda continuar
$count = 0;
print("CONTINUANDO...\n");
}
}


Se surgirem duvidas postem!

Abs


6. Não está enviando

Henry
mandrakevenom

(usa Deepin)

Enviado em 02/03/2017 - 01:02h

Então segue o codigo
#!/usr/local/bin/perl

$ARGC=@ARGV;
if ($ARGC !=4) {
printf "Você deve ter digitado os comandos de forma errada\n";
printf "Veja como usar corretamente...\n";
printf "perl $0 <mailist> <remetente\@mail.com> <assunto> <corpo.html>\n";
printf "Exemplo: perl $0 lista01.txt peu\@msn.com Ola index.html\n";
exit(1);
}

$mailtype = "content-type: text/html";
$sendmail = '/usr/sbin/sendmail';
$sender = $ARGV[1];
$subject = $ARGV[2];
$efile = $ARGV[0];
$emar = $ARGV[0];
open(FOO, $ARGV[3]);
@foo = <FOO>;
$corpo = join("\n", @foo);
open (BANDFIT, "$emar") || die "Can't Open $emar";
$cont=0;

while(<BANDFIT>) {
($ID,$options) = split(/\|/,$_);
chop($options);
foreach ($ID) {
$recipient = $ID;
open (SENDMAIL, "| $sendmail -t");
print SENDMAIL "$mailtype\n";
print SENDMAIL "Subject: $subject\n";
print SENDMAIL "From: $sender\n";
print SENDMAIL "To: $recipient\n\n";
print SENDMAIL "$corpo\n\n";
close (SENDMAIL);
$cont=$cont+1;
print "$cont $recipient"
}
}
close(BANDFIT);

use 5.10.0;
use strict;
use warnings;

# loop infinito
my $count = 0;
while(1) {
# este é o primeiro comando de espera, onde 1 é o número
# em segundos que se quer aguardar
sleep(1);
# count refere-se a quantidade de e-mail por vez que você
# quer enviar entre os intervalos
############# SCRIPT AQUI ###############
print("b4sh\@root#:[+] Enviado Com sucesso [+]\n");
$count++;
if($count == 500) {
print("Opa, vamos esperar né\n");
sleep(5);

# zera o contador para a coisa toda continuar
$count = 0;
print("b4sh\@root#: [+] Recomeçando os envios [+]\n");
}
}


ele envia, porem não pausa, e quando eu mexo e funciona o Pause ele não envia.... entendeu ? ta rodando um codigo de cada vez e quando o código do Pause começa a funciona os email não são enviado pq eu já checkei isso... ajuda urgente..

EDIT

achei o código que funciona, quem precisar ta aqui....

#!/usr/local/bin/perl
## use: perl enviar.pl list-mail.txt "my@mail.com" "subject" html.html


$ARGC=@ARGV;

if ($ARGC !=4) {

printf "$0 <mailist> <my@myemail.com> <subject> <msg.htm>\n\n";

#printf "Script sending emails";

exit(1);

}


$mailtype = "content-type: text/html";

$sendmail = '/usr/sbin/sendmail';

$sender = $ARGV[1];
$subject = $ARGV[2];
$efile = $ARGV[0];
$emar = $ARGV[0];
$count=1;

open(FOO, $ARGV[3]);
@foo = <FOO>;

$corpo = join("\n", @foo);
open (BANDFIT, "$emar") || die "Can't Open $emar";

while(<BANDFIT>) {


($ID,

$options) = split(/\|/,$_);

chop($options);

foreach ($ID) {

$recipient = $ID;
## this changes =>>> ###
### send 5 email of list.txt, and pause 5 seconds, continue.. ###

if ( $count == 5 ) {

print("PAUSE!\n");
$count = 0;
sleep(5);
print("CONTINUE..\n");
}

open (SENDMAIL, "| $sendmail -t");
print SENDMAIL "$mailtype\n";
print SENDMAIL "Subject: $subject\n";
print SENDMAIL "From: $sender\n";
print SENDMAIL "To: $recipient\n\n";
print SENDMAIL "$corpo\n\n";
close (SENDMAIL);

printf "sending for $recipient [ Ok Send; $count ]";
$count++;
}

}
close(BANDFIT);

#### end #####



7. nao esta enviando

alexandre velasco gomes
mateusmorais

(usa Lubuntu)

Enviado em 28/03/2017 - 03:33h

eu estou tentado fazer um envio com o perl so que nao esta chegando nos email




8. Re: Pause no envio de e-mails

Carlos A. P. Cunha
Carlos_Cunha

(usa Deepin)

Enviado em 31/03/2017 - 02:24h

mandrakevenom escreveu:

Então segue o codigo
#!/usr/local/bin/perl

$ARGC=@ARGV;
if ($ARGC !=4) {
printf "Você deve ter digitado os comandos de forma errada\n";
printf "Veja como usar corretamente...\n";
printf "perl $0 <mailist> <remetente\@mail.com> <assunto> <corpo.html>\n";
printf "Exemplo: perl $0 lista01.txt peu\@msn.com Ola index.html\n";
exit(1);
}

$mailtype = "content-type: text/html";
$sendmail = '/usr/sbin/sendmail';
$sender = $ARGV[1];
$subject = $ARGV[2];
$efile = $ARGV[0];
$emar = $ARGV[0];
open(FOO, $ARGV[3]);
@foo = <FOO>;
$corpo = join("\n", @foo);
open (BANDFIT, "$emar") || die "Can't Open $emar";
$cont=0;

while(<BANDFIT>) {
($ID,$options) = split(/\|/,$_);
chop($options);
foreach ($ID) {
$recipient = $ID;
open (SENDMAIL, "| $sendmail -t");
print SENDMAIL "$mailtype\n";
print SENDMAIL "Subject: $subject\n";
print SENDMAIL "From: $sender\n";
print SENDMAIL "To: $recipient\n\n";
print SENDMAIL "$corpo\n\n";
close (SENDMAIL);
$cont=$cont+1;
print "$cont $recipient"
}
}
close(BANDFIT);

use 5.10.0;
use strict;
use warnings;

# loop infinito
my $count = 0;
while(1) {
# este é o primeiro comando de espera, onde 1 é o número
# em segundos que se quer aguardar
sleep(1);
# count refere-se a quantidade de e-mail por vez que você
# quer enviar entre os intervalos
############# SCRIPT AQUI ###############
print("b4sh\@root#:[+] Enviado Com sucesso [+]\n");
$count++;
if($count == 500) {
print("Opa, vamos esperar né\n");
sleep(5);

# zera o contador para a coisa toda continuar
$count = 0;
print("b4sh\@root#: [+] Recomeçando os envios [+]\n");
}
}


ele envia, porem não pausa, e quando eu mexo e funciona o Pause ele não envia.... entendeu ? ta rodando um codigo de cada vez e quando o código do Pause começa a funciona os email não são enviado pq eu já checkei isso... ajuda urgente..

EDIT

achei o código que funciona, quem precisar ta aqui....

#!/usr/local/bin/perl
## use: perl enviar.pl list-mail.txt "my@mail.com" "subject" html.html


$ARGC=@ARGV;

if ($ARGC !=4) {

printf "$0 <mailist> <my@myemail.com> <subject> <msg.htm>\n\n";

#printf "Script sending emails";

exit(1);

}


$mailtype = "content-type: text/html";

$sendmail = '/usr/sbin/sendmail';

$sender = $ARGV[1];
$subject = $ARGV[2];
$efile = $ARGV[0];
$emar = $ARGV[0];
$count=1;

open(FOO, $ARGV[3]);
@foo = <FOO>;

$corpo = join("\n", @foo);
open (BANDFIT, "$emar") || die "Can't Open $emar";

while(<BANDFIT>) {


($ID,

$options) = split(/\|/,$_);

chop($options);

foreach ($ID) {

$recipient = $ID;
## this changes =>>> ###
### send 5 email of list.txt, and pause 5 seconds, continue.. ###

if ( $count == 5 ) {

print("PAUSE!\n");
$count = 0;
sleep(5);
print("CONTINUE..\n");
}

open (SENDMAIL, "| $sendmail -t");
print SENDMAIL "$mailtype\n";
print SENDMAIL "Subject: $subject\n";
print SENDMAIL "From: $sender\n";
print SENDMAIL "To: $recipient\n\n";
print SENDMAIL "$corpo\n\n";
close (SENDMAIL);

printf "sending for $recipient [ Ok Send; $count ]";
$count++;
}

}
close(BANDFIT);

#### end #####


Marque o tópico como resolvido.
Abraço

#-------------------------------------------------------------------------------------#

"Linux is cool"