NAME

Email::Blaster - Scalable Mass Email System

SYNOPSIS

Generally, don't use this module from your code. Use the supplied scripts instead.

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.

  • Clustering Support

    Uses memcached and libevent to do the heavy lifting.

  • 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 too quickly from your network.

  • 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 (Clustering).

    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>

SUPPORT

Visit http://www.devstack.com/contact/ or email the author at <jdrago_999@yahoo.com>

Commercial support and installation is available.

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.