Interpretador e variáveis:
#!/usr/local/bin/perl
$ARGC=@ARGV;
if ($ARGC !=4) { #este programa requer que os dados sejam todos postos na variável $ARGC
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);
Vamos supor que minha lista de emails esteja em /home/dr4k3/list.txt, que meu email seja dr4k3@hotmail.com, que o assunto seja "Trabalhando com emails", que o conteúdo da mensagem esteja em /home/dr4k3/msg.html e que o programa se chame "esend" e esteja em /home/dr4k3/esend.pl.
Nossa requisição seria a seguinte:
cd /home/dr4k3
$ perl esend.pl /home/dr4k3/list.txt dr4k3@hotmail.com "Trabalhando com emails" /home/dr4k3/msg.html
Obs.: Caso ocorra de todos os dados estarem no mesmo local do programa, não precisa por o caminho, exemplo:
cd /home/dr4k3
$ perl esend.pl listemails.txt dr4k3@hotmail.com "Trabalhando com emails" msg.html
Definindo:
$mailtype = "content-type: text/html";
$sendmail = '/usr/sbin/sendmail'; #chama a lib
# aqui ele vai definir o que cada ARGV é
$sender = $ARGV[1];
$subject = $ARGV[2];
$efile = $ARGV[0];
$emar = $ARGV[0];
Abrindo mensagem & lista:
open(FOO, $ARGV[3]); #aí ele vai abrir nossa mensagem que estava .html e a nossa lista de emails
@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;
#Enviando:
open (SENDMAIL, "| $sendmail -t"); #vai abrir a lib
print SENDMAIL "$mailtype\n";
print SENDMAIL "Subject: $subject\n";
print SENDMAIL "From: $sender\n"; # aí o programa vai usar os dados para enviar
print SENDMAIL "To: $recipient\n\n";
print SENDMAIL "$corpo\n\n";
close (SENDMAIL); #aqui vai fechar a conexão
$cont=$cont+1;
#Final:
printf "$cont Enviado para $recipient";
}
}
close(BANDFIT) #fim do programa
Código original:
#!/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;
printf "$cont Enviado para $recipient";
}
}
close(BANDFIT);