NAME
   Email::MIME::Kit::Bulk - Email::MIME::Kit-based bulk mailer

VERSION
   version 0.0.1

SYNOPSIS
       use Email::MIME::Kit::Bulk;
       use Email::MIME::Kit::Bulk::Target;

       my @targets = (
           Email::MIME::Kit::Bulk::Target->new(
               to => '[email protected]',
           ),
           Email::MIME::Kit::Bulk::Target->new(
               to => '[email protected]',
               cc => '[email protected]',
               language => 'en',
           ),
       );

       my $bulk = Email::MIME::Kit::Bulk->new(
           kit => '/path/to/mime/kit',
           processes => 5,
           targets => \@targets,
       );

       $bulk->send;

DESCRIPTION
   "Email::MIME::Kit::Bulk" is an extension of Email::MIME::Kit for sending
   bulk emails. The module can be used directly, or via the companion
   script "emk_bulk".

   If a language is specified for a target, "Email::MIME::Kit" will use
   "manifest.*language*.json" to generate its associated email. If no
   language is given, the regular "manifest.json" will be used instead.

   If "emk_bulk" is used, it'll look in the *kit* directory for a
   "targets.json" file, which it'll use to create the email targets. The
   format of the "targets.json" file is a simple serialization of the
   Email::MIME::Kit::Bulk::Target constructor arguments:

       [
       {
           "to" : "[email protected]"
           "cc" : [
               "[email protected]"
           ],
           "language" : "en",
           "template_params" : {
               "superlative" : "Fantastic"
           },
       },
       {
           "to" : "[email protected]"
           "cc" : [
               "[email protected]"
           ],
           "language" : "fr",
           "template_params" : {
               "superlative" : "Extraordinaire"
           },
       }
       ]

   "Email::MIME::Kit::Bulk" uses MCE to parallize the sending of the
   emails. The number of processes used can be set via the "processes"
   constructor argument. By default MCE will select the number of processes
   based on the number of available processors. If the number of processes
   is set to be 1, MCE is bypassed altogether.

METHODS
 new( %args )
   Constructor.

  Arguments
   targets => \@targets
       Takes in an array of Email::MIME::Kit::Bulk::Target objects, which
       are the email would-be recipients.

       Either the argument "targets" or "to" must be passed to the
       constructor.

   to => $email_address
       Email address of the '"To:"' recipient. Ignored if "targets" is
       given as well.

   cc => $email_address
       Email address of the '"Cc:"' recipient. Ignored if "targets" is
       given as well.

   bcc => $email_address
       Email address of the '"Bcc:"' recipient. Ignored if "targets" is
       given as well.

   kit => $path
       Path of the directory holding the files used by Email::MIME::Kit.
       Can be a string or a Path::Tiny object.

   from => $email_address
       '"From"' address for the email .

   processes => $nbr
       Maximal number of parallel processes used to send the emails.

       If not specified, will be chosen by MCE. If set to 1, the parallel
       processing will be skipped altogether.

       Not specified by default.

 send()
   Send the emails.

AUTHORS
   *   Jesse Luehrs <[email protected]>

   *   Yanick Champoux <[email protected]>

COPYRIGHT AND LICENSE
   This software is copyright (c) 2015 by Infinity Interactive
   <[email protected]>.

   This is free software; you can redistribute it and/or modify it under
   the same terms as the Perl 5 programming language system itself.