#!/usr/bin/perl -w
use strict;
use Mail::Bulkmail;
use Mail::AddressSort;
use File::Spec::Functions;
use Getopt::Std;
my %default = (
dir => ".",
addrfile => "addresslist.txt",
mailfile => "mail.txt",
errorlog => "error.log",
successlog => "success.log",
subject => q(Default subject),
fromaddr => q(email@domain.com),
);
getopts('a:d:e:hf:l:m:s:', \my %option);
$option{h} && die << "HELPMSG";
usage: bulkmail [-a addrfile] [-d directory]
[-e errorlog] [-h]
[-f fromaddr] [-l successlog]
[-m mailfile] [-s subject]
All files must reside in the same directory.
defaults: -a $default{addrfile} -d $default{dir}
-e $default{errorlog} -f $default{fromaddr}
-l $default{successlog} -m $default{mailfile}
-s $default{subject}
HELPMSG
my $dir = $option{d} || $default{dir};
open(my $listfile,"<",catdir($dir, $option{a} || $default{addrfile}))
or die "Couldn't open address list: $!\n";
chomp(my @address = <$listfile>);
close $listfile;
my $list=Mail::AddressSort->new();
$list->input(@address);
(@address)=$list->sorted();
open(my $mailfile,"<",catdir($dir, $option{m} || $default{mailfile}))
or die "Couldn't open message file: $!\n";
read $mailfile, my $mail, -s $mailfile;
close $mailfile;
my $bulk = Mail::Bulkmail->new(
'LIST' => \@address,
'Message' => $mail,
'From' => $option{f} || $default{fromaddr},
'Reply-to' => $option{f} || $default{fromaddr},
'Subject' => $option{s} || $default{subject},
'BAD' => catfile($dir, $option{e} || $default{errorlog}),
'GOOD' => catfile($dir, $option{l} || $default{successlog})
+,
'ERRFILE' => catfile($dir, $option{e} || $default{errorlog}),
'HTML' => 1,
'use_envelope' => 1,
'envelope_limit'=> 1000
) or die Mail::Bulkmail -> error();
$bulk->header(qw(Content-type: text/html));
$bulk->bulkmail;
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.