NAME

Email::Blaster - Scalable Mass Email System

SYNOPSIS

% mysql -u xxx -p
mysql> create database email_blaster;
mysql> quit;
% mysql -u xxx -p email_blaster < sbin/email_blaster.sql

Edit the config file:

% vi conf/email-blaster-config.xml

Insert some fake data to play with:

% perl fake-transmission.pl

Run the bulk blaster:

% perl bulk_blaster.pl

Run the *throttled* blaster:

% perl throttled_blaster.pl

DESCRIPTION

Email::Blaster is the latest in a long, long line of mass-emailer systems I have written since 2002.

This version has many features.

  • Testing mode.

    Send a few messages to yourself before you turn on the firehose.

  • Domain-based throttling with hourly limits.

    Never get blacklisted again because of email flooding.

  • Configurable (and subclassable) behaviors and components.

    If configuration alone doesn't get you what you want, you can always subclass something (i.e. MailSender or MaillogWatcher) to get the desired behavior.

  • Scales Out Well.

    Designed to spread the work out across many, many, many servers. If your email list has 1Million subscribers, you could *reliably* send your messages to them in a matter of minutes.

    Add more servers, get more capacity and throughput.

  • Event handlers (in serial).

    Handle server-level events with a simple plugin. Events like server startup and shutdown, the start or end of a transmission, etc.

    More details to follow.

HANDLING EVENTS

Email::Blaster offers the following events, which can be handled by one or more subclasses of the appropriate class:

server_startup

Subclass Email::Blaster::ServerStartupHandler and add the following to your config:

<handlers>
  ...
  <server_startup>
    ...
    <handler>My::StartupHandler</handler>
  </server_startup>

server_shutdown

Subclass Email::Blaster::ServerShutdownHandler and add the following to your config:

<handlers>
  ...
  <server_shutdown>
    ...
    <handler>My::ShutdownHandler</handler>
  </server_shutdown>

init_transmission

Subclass Email::Blaster::TransmissionInitHandler and add the following to your config:

<handlers>
  ...
  <init_transmission>
    ...
    <handler>My::TransmissionInitHandler</handler>
  </init_transmission>

begin_transmission

Subclass Email::Blaster::TransmissionBeginHandler and add the following to your config:

<handlers>
  ...
  <begin_transmission>
    ...
    <handler>My::TransmissionBeginHandler</handler>
  </begin_transmission>

end_transmission

Subclass Email::Blaster::TransmissionEndHandler and add the following to your config:

<handlers>
  ...
  <end_transmission>
    ...
    <handler>My::TransmissionEndHandler</handler>
  </end_transmission>

message_bounced

Subclass Email::Blaster::MessageBouncedHandler and add the following to your config:

<handlers>
  ...
  <message_bounced>
    ...
    <handler>My::MessageBouncedHandler</handler>
  </message_bounced>

AUTHOR

John Drago <jdrago_999@yahoo.com>

COPYRIGHT AND LICENSE

Copyright (C) 2008 by John Drago

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.