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.