#!/usr/bin/perl

use strict;
use warnings;

use File::Slurper;

my $tmp_file="/tmp/send_to_addresses";

my $mail_file = $ARGV[0] // '';
if(not $mail_file) {
  print "I neeed a mail_file\n";
  exit;
}
if(not $mail_file=~m|\.mail$|) {
  print "$mail_file does not look like a mail file\n";
  exit;
}  
if(not -f $mail_file) {
  print "I can't open your mail_file $mail_file.\n";
  exit;
}

my $address_file = $ARGV[1] // '';
if(not $address_file) {
  print "I neeed an address_file\n";
  exit;
}
if(not -f $address_file) {
  print "I can't open your address_file $address_file.";
  exit;
}

## how long do we sleep between mails
my $sleep;
my $wait = $ARGV[2] // '';
if(not $wait) {
  $sleep=10;
}
elsif(not $wait=~m|^\d+$|) {
  $sleep=10;
}
else {
  $sleep=$wait;
}

if(not $address_file) {
  print "I neeed an address_file\n";
  exit;
}
if(not -f $address_file) {
  print "I can't open your address_file $address_file.";
  exit;
}

my $email=&File::Slurper::read_text($mail_file);
my @addresses=&File::Slurper::read_lines($address_file);
foreach my $address (@addresses) {
  chomp $address;
  if(not $address=~m|^[^ @]+\@[^ @]+$|) {
    print "I can't deal with the address $address\n";
    next;;
  }  
  $email=~s|\nTo: .*|\nTo: $address|;
  &File::Slurper::write_text($tmp_file, $email);
  system("cat $tmp_file | /usr/sbin/exim4 -t");
  sleep $sleep;
}

exit;

