Leído 538 veces

0 Usuarios y 1 Visitante están viendo este tema.

Script mailer.pl
« en: 07 de Enero de 2018, 07:41:09 am »
Citar
#!/usr/bin/perl
# by n3 at MT
use File::Basename;
#use Time::HiRes;
#use Data::Dumper qw(Dumper);
my $plscript = basename($0);
my $c0untargs = scalar @ARGV;

my $mailtype = "content-type: text/html";
my $Message_ID_Domain="welcome.aexp.com";
my $sendmail = '/usr/sbin/sendmail';

sub man{


       
         $man = "Error: Invalid argument, tried?:\r\n\r\n"
              ."              4 arguments           \r\n"
              ."_____________________________________________________________________________________\r\n\r\n"
              ."perl $plscript email-list.txt \"from\@mail.com <from\@mail.com>\" \"subject\" message.html". "\r\n"
              ."_____________________________________________________________________________________\r\n\r\n"             
              ."              6 arguments           \r\n\r\n"   
              ."perl $plscript email-list.txt \"from\@mail.com <from\@mail.com>\" \"subject\" message.html 4000 10". "\r\n"
              ."_____________________________________________________________________________________\r\n\r\n"
               ."4000 mail time to wait for sending next 4000 is 10 Seconds , 1800 = 30 minutes ". "\r\n\r\n";       

          die $man;

}
   
   
    if($c0untargs!= 4 & $c0untargs!=6 ) { man(); }
     
          $mailist = $ARGV[0];
          $from = $ARGV[1];
          $subject= $ARGV[2];
          $letter= $ARGV[3];
           print 'Started ... '."\r\n";
         


          print '1 ) Get list:'.$mailist." ... \r\n";
          open(FILE1,$mailist) or die "could not open $mailist for reading......FAIL\n";
          print "\t".'Valid Mailist:'.$mailist." ....OK \r\n";
          $from =~ s/\"(.*)\"/$1/;
          print '2 ) From header:'.$from." .....OK\r\n";
          $subject =~ s/\"(.*)\"/$1/;
          print '3 ) Subject:'.$subject." .....................OK\r\n";
          print '4 ) Get Letter:'.$letter." ... \r\n";     
          open(FILE2,$letter) or die "could not open $letter for reading......FAIL\n";
          print "\t".'Valid Letter:'.$letter." ....OK \r\n";
                                   $limit_send=-1;
                                   $time_wait_for_next_sending=0;
         
          if($c0untargs==6){
                                     $limit_send=$ARGV[4];
                                   $time_wait_for_next_sending=$ARGV[5];

                                 print "5 ) Limit sending:$limit_send .............OK\r\n";
                                 print "6 ) Time wait for next sending: $time_wait_for_next_sending Seconds.............OK\r\n";

          }else{
                    print '5 ) Limit sending:NO .............OK'."\r\n";
                    print '6 ) Time wait for next sending: 0 Seconds.............OK'."\r\n";

          }
 #join("\n", @foo);
my $letterc = join("\n",<FILE2>);
    close(FILE2);


sub rndhash{ join'', @_[ map{ rand @_ } 1 .. shift ] }
 

sub sendx{

         my($to,$count) = @_;
       
        $hasx=rndhash (12, 'a'..'z', 0..9);
        $Message_ID='Message-ID: <'.$hasx.'@'.$Message_ID_Domain.'>';
        $mailtypex=$mailtype.'; boundary="'.$hasx."/".$count.'"';
 
        open (SENDMAIL, "| $sendmail -t");
        print SENDMAIL "$mailtypex\n";
        print SENDMAIL "Subject: $subject\n";       
        print SENDMAIL "From: $from\n";
        print SENDMAIL "To: $to\n";         
        print SENDMAIL "$Message_ID\n";
        print SENDMAIL "$letterc\n";
        close (SENDMAIL);

        print "$to\n";

}


$count = 0;

while (<FILE1>) {
                      s/\R\z//;
                      if($c0untargs==6){
                                        if($count%$limit_send==0 && $count>0){
                                        print '___________________________'."\r\n";
                                        sleep($time_wait_for_next_sending);
                                        }
 
                       }
                     
                                sendx($_,$count);
               
    $count++;
}
close(FILE1);


print "\r\n".'END Enviados ...'. $count. "\r\n";