Add skip list supoprt & encode_phrase() call for To: line
This commit is contained in:
parent
279ce453ba
commit
0e3f0fe882
1 changed files with 37 additions and 10 deletions
|
@ -19,15 +19,28 @@
|
|||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Encode;
|
||||
use Email::MIME::RFC2047::Encoder;
|
||||
use utf8;
|
||||
|
||||
if (@ARGV != 3) {
|
||||
print "usage: $0 <LIST_OF_ADDRESSES_FILE> <MESSAGE_FILE> <FRM_ADDR>\n";
|
||||
my $encoder = Email::MIME::RFC2047::Encoder->new();
|
||||
use utf8;
|
||||
|
||||
if (@ARGV != 3 and @ARGV != 4) {
|
||||
print "usage: $0 <LIST_OF_ADDRESSES_FILE> <MESSAGE_FILE> <FRM_ADDR> [<SKIP_LIST_FILE>]\n";
|
||||
exit 1;
|
||||
}
|
||||
my($LIST_FILE, $MESSAGE_FILE, $FROM_ADDRESS) = @ARGV;
|
||||
my($LIST_FILE, $MESSAGE_FILE, $FROM_ADDRESS, $SKIP_LIST_FILE) = @ARGV;
|
||||
|
||||
my %skip;
|
||||
|
||||
if (defined $SKIP_LIST_FILE) {
|
||||
die "$SKIP_LIST_FILE does not exist or is not readable: $!" unless -r $SKIP_LIST_FILE;
|
||||
open(SKIP_LIST, "<", $SKIP_LIST_FILE);
|
||||
while (my $line = <SKIP_LIST>) {
|
||||
chomp $line;
|
||||
$skip{$line} = $SKIP_LIST_FILE;
|
||||
}
|
||||
}
|
||||
open(LIST, "<$LIST_FILE") or die "unable to open $LIST_FILE: $!";
|
||||
|
||||
my @sendTo;
|
||||
|
@ -49,19 +62,33 @@ my @message;
|
|||
close MESSAGE;
|
||||
|
||||
foreach my $fullEmailLine (@sendTo) {
|
||||
$fullEmailLine =~ s/\s*#.*$//; $fullEmailLine =~ s/\s*$//; $fullEmailLine =~ s/^\s*//;
|
||||
$fullEmailLine = Encode::encode("MIME-Header", $fullEmailLine);
|
||||
#
|
||||
my $emailTo = $fullEmailLine;
|
||||
$emailTo =~ s/^[^<]+\<\s*([^\>]+)\s*\>\s*$/$1/;
|
||||
my $doSkip = 0;
|
||||
foreach my $skip (keys %skip) {
|
||||
if ($fullEmailLine =~ /$skip/) {
|
||||
print STDERR "Skipping $fullEmailLine\n";
|
||||
$doSkip = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
next if $doSkip;
|
||||
|
||||
open(SENDMAIL, "|/usr/lib/sendmail -f \"$FROM_ADDRESS\" -oi -oem -- $emailTo $FROM_ADDRESS") or
|
||||
$fullEmailLine =~ s/\s*#.*$//; $fullEmailLine =~ s/\s*$//; $fullEmailLine =~ s/^\s*//;
|
||||
|
||||
my $emailTo;
|
||||
die unless $fullEmailLine =~ /^"?([^\<]+)\s*"?\<\s*([^\>]+)\s*\>\s*$/;
|
||||
($fullEmailLine, $emailTo) = ($1, $2);
|
||||
$fullEmailLine =~ s/\s*\"?\s*$//; $fullEmailLine =~ s/^\s*"?\s*//;
|
||||
$fullEmailLine = $encoder->encode_phrase($fullEmailLine) . " <" . $emailTo .">";
|
||||
#
|
||||
|
||||
open(SENDMAIL, "|/usr/lib/sendmail -f \"$FROM_ADDRESS\" -oi -oem -- \"$emailTo\" \"$FROM_ADDRESS\"") or
|
||||
die "unable to run sendmail: $!";
|
||||
|
||||
print SENDMAIL "To: $fullEmailLine\n"; # X-Precedence: bulk\n";
|
||||
print SENDMAIL @message;
|
||||
|
||||
close SENDMAIL;
|
||||
print STDERR "Sentto \"$fullEmailLine\" at $emailTo\n";
|
||||
sleep 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue