[Catalyst] Sending 3000 emails.
catalystgroup at unitedgames.co.uk
Thu Nov 26 15:32:01 GMT 2015
You lot are all experts at Catalyst and Perl,
and because I'm using Perl to code a Catalyst program, I wanted to ask you about a problem I've encountered.
The Catalyst app I'm coding is to replace a PHP website, which presently allows an admin to manage sending out an email to all members. The site has 3000 odd members. From what I could tell, the PHP code was simply using the PHP mail function to send email (although it did in my experience typically take two days for everyone to receive an email sent with it).
I've also been asking other Perl programmers when I've had the chance - and the only concerns raised, were about IP blacklisting or emails bouncing back - not about actual code working.
So could sending 3000 emails be as simple as Matt's old CGI form mail?
I had a look on CPAN, and found the simple looking Email::Stuffer,
and wrote a script, sending an email to myself, and it worked.
I then modified the script to pick five email addresses from a MySQL database, and email them, and again - it worked.
Okay - one final change - throwing 3000 email addresses at it.
How does that do....?
Starts to work - then throws up an Internal Server Error in the browser window,
and I find out my Fast CGI Plack Up server thingie isn't up, nor running my Catalyst app anymore.
I have to type plackup and my details, etc, again from the command prompt.
A log in to Web Host Manager (this is an apache2 VPS with CPanel) and a check of the "View Sent Summary" shows 1020 emails sent - 611 successful, 642 deferrals and 329 failures...curious, as that adds up to more than 1020, =S. If I click through for more details, it shows 1582 records - some with green ticks, and others with amber or red exclamation marks, ^_^.
I can worry about IPs and failure rates later....
....I just want to know why the whole FastCGI Plack loaded Catalyst app came down half way through,
and how I can have a Perl script process sending 3000 emails without that happening every time, =S.
Do I need to use a queue within Perl? Or does the postfix/sendmail on the server, automatically queue everything for me? If so - why did my code crash the Catalyst app, and not send all the emails? >_<.
I'm guessing this is a common problem - how does a website email all its signed up members - and so there must surely be a common solution among Perl / Catalyst users....?
Any help, appreciated!
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Catalyst