Name "main::id" used only once: possible typo at sendmessages.pl line 39. Use of uninitialized value in lc at /usr/share/perl5/vendor_perl/Email/Simple/Header.pm line 181. Use of uninitialized value in lc at /usr/share/perl5/vendor_perl/Email/Simple/Header.pm line 181. Use of uninitialized value in lc at /usr/share/perl5/vendor_perl/Email/Simple/Header.pm line 181. no recipients Trace begun at /usr/share/perl5/vendor_perl/Email/Sender/Simple.pm line 107 Email::Sender::Simple::send_email('Email::Sender::Simple', 'Email::Abstract=ARRAY(0x34f66e8)', 'HASH(0x35be030)') called at /usr/share/perl5/vendor_perl/Email/Sender/Role/CommonSending.pm line 27 Email::Sender::Role::CommonSending::__ANON__ at /usr/share/perl5/vendor_perl/Try/Tiny.pm line 71 eval {...} at /usr/share/perl5/vendor_perl/Try/Tiny.pm line 67 Try::Tiny::try('CODE(0x35bdfd0)', 'Try::Tiny::Catch=REF(0x34ccf28)') called at /usr/share/perl5/vendor_perl/Email/Sender/Role/CommonSending.pm line 40 Email::Sender::Role::CommonSending::send('Email::Sender::Simple', 'alicewonder@###') called at /usr/share/perl5/vendor_perl/Sub/Exporter/Util.pm line 18 Sub::Exporter::Util::__ANON__('alicewonder@###') called at sendmessages.pl line 64 (### is hiding the valid domain, I h8 spam) #### #!/usr/bin/perl -w use DBI; $dbh = DBI->connect('dbi:mysql:alicenet','####','####', { mysql_enable_utf8 => 1, }) or die "Connection Error: $DBI::errstr\n"; $adbh = DBI->connect('dbi:mysql:anetauth','####','####', { mysql_enable_utf8 => 1, }) or die "Connection Error: $DBI::errstr\n"; #count the messages $sql = "SELECT COUNT(id) AS count FROM mailcue WHERE failed < 3 AND lasttry < (NOW() - INTERVAL 90 MINUTE)"; $sth = $dbh->prepare($sql); $sth->execute or die "SQL Error: $DBI:: errstr\n"; @row = $sth->fetchrow; $count = $row[0]; #max number of cued messages to fetch $n = ($count < 180)? 30 : int($count/6); #seconds to sleep between action - we want to finish in 8 minutes $sleep = int(480/$n); $sql = "SELECT id,userid,subject,message FROM mailcue WHERE failed < 3 AND lasttry < (NOW() - INTERVAL 90 MINUTE) ORDER BY id LIMIT $n"; $sth = $dbh->prepare($sql); $sth->execute or die "SQL Error: $DBI::errstr\n"; while (@row = $sth->fetchrow_array) { $id = $row[0]; $userid = $row[1]; $subject = $row[2]; $body = $row[3]; $asql = "SELECT email FROM userauth WHERE id=$userid"; $asth = $adbh->prepare($asql); $asth->execute; @arow = $asth->fetchrow; $email = $arow[0]; # okay we can send this futher mocker use Email::MIME; my $message = Email::MIME->create( header_str => [ From => 'anetbot@domblogger.net', To => $email, Subject => $subject, ], attributes => { encoding => '8bit', charset => 'utf-8', }, body_str => $body, ); # send it use Email::Sender::Simple qw(sendmail); my $response = sendmail($email); # on success, delete from mailcue. On fail, increment failed field in mailcue and insert error message into error field of mailcue. sleep $sleep; }