#!/usr/bin/perl -w use strict; use Mail::Bulkmail; 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(vpolyakov@katrillion.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{errorlo +g} -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; @address = map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { $_, lc((split /\@/)[-1]) } @address; 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; $bulk = Mail::Bulkmail->new( LIST => \@address, Message => $mail, From => $option{f} || $default{fromaddr}, Subject => $option{s} || $default{subject}, BAD => catfile($dir, $option{e} || $default{errorlog}), GOOD => catfile($dir, $option{l} || $default{successlo +g}), ERRFILE => catfile($dir, $option{e} || $default{errorl +og}), HTML => 1, use_envelope => 1, ); $bulk->HFM(1); $bulk->envelope_limit(1000); $bulk->header(qw(Content-type text/html)); $bulk->bulkmail;
Of course you can get past the same-directory limitation by passing something like -a ../addresses.txt

Makeshifts last the longest.


In reply to Re: Yet another tool for sending out newsletters by Aristotle
in thread Yet another tool for sending out newsletters by vxp

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.