NAME
    Mail::SendVarious - send mail via STMP and sendmail

SYNOPSIS
    use Mail::SendVarious;

    sendmail(
           from    => 'user@host',
           From    => 'First Last',
           to      => 'user@host, user@host',
           cc      => 'user@host, user@host',
           xheader => 'Some header stuff',
           body    => 'Some body stuff here'
    );

    sendmail(
           envelope_to     => 'user@host, user@host',
           message         => 'Complete header and body stuff',
    );

    sendmail(
           envelope_to     => 'user@host, user@host',
           header          => 'Complete header stuff',
           body            => 'Complete body stuff',
    );

    use Daemon::Generic::Sendmail qw(make_message);
    ($from, $message, @envelope_to) = make_message(%args);

DESCRIPTION
   Mail::SendVarious will try to send mail multiple ways. First it tries
   via SMTP. If that doesn't work then it tries using "/usr/sbin/sendmail".

   The "sendmail()" function can put together a message header or it you
   can hand it one. Here are the options it can take:

   envelope_from  Sets the sender email address. If creating a header, also
                  sets the email address in the "From:" header if there is
                  no "from" option.

   from           Sets the envelope sender email address if "envelope_from"
                  isn't set. If creating a header, also sets the email
                  address in the "From:" header.

   From           Set the name over the sender in the "From:" header.

   envelope_to    Sets who the message is sent to.

   to             Sets the "To:" header. Also sets who the message is sent
                  to if "envelope_to" isn't set.

   cc             Sets the "Cc:" header. Also adds who the message is sent
                  to if "envelope_to" isn't set.

   bcc            Adds to who the message is sent to.

   subject        Specifies the "Subject:" header.

   xheader        Specifies extra header lines to be added if a header is
                  generated.

   header         Specifies the complete message header. "xheader" will be
                  ignored. No "To:", "From:", "Cc:" or "Subject:" header
                  will be generated.

   body           Specifies the complete message body.

   message        Specifies the complete message. "header" and "body"
                  arguments will be ignored. No "To:", "From:", "Cc:" or
                  "Subject:" header will be generated.

   build_header   Specifies if a header should be generated with "To:",
                  "From:", "Cc:" and "Subject:". This overrides what what
                  otherwise might happen.

   debuglogger    Specifies a function to call for debug output. If not
                  set, no debug output is generated.

   errorlogger    Specifies a function to call for error output. If not
                  set, errors are reported on "STDERR".

   hostlist       Specifies a list of hosts to try to send to via SMTP.
                  This should be an array refrence. If not set,
                  @Mail::SendVarious::mail_hostlist is used. The default
                  for @Mail::SendVarious::mail_hostlist is 127.0.0.1.

   mail_command   Specifies a command to use if sending via SMTP fails.
                  This should be an array refrence. If not set,
                  @Mail::SendVarious::mail_command is used. The default for
                  @Mail::SendVarious::mail_command is "/usr/sbin/sendmail
                  -oeml -i".

   no_rejects     Normally when sending via SMTP, Mail::SendVarious will
                  skip over any recipients that are rejected. Sent
                  "no_rejects" and the SMTP server will be skipped instead.
                  If "no_rejects" is not set, then any rejected recipients
                  will end up in @Mail::SendVarious::to_rejected.

   The return value from "sendmail()" is true if the message was sent and
   false otherwise. If the message was not sent, then the variable
   "Mail::SendVarious::mail_error" will be set to a description of the
   problem.

EXPORT_OK
   In addition to the standard export item of the "sendmail()" function,
   the following are available explicitly:

   $mail_error    The last error.

   make_message() An additional function "make_message()" is provided. It
                  takes the same arguemtns as "sendmail()" but does not
                  send mail. It just generates the message.

                  The following two snippets do the same thing:

                   {
                          my ($from, $message, @envelope_to) = make_message(%args);
                          sendmail(
                                  envelope_from   => $from,
                                  envelope_to     => \@envelope_to,
                                  message         => $message,
                          );
                   }

                  and

                   sendmail(%args);

   @to_rejected   Any recipients that were rejected by the SMTP server.
                  (Only if "no_rejects" isn't set).

   @mail_hostlist "(qw(127.0.0.1))"

   @mail_command  "(qw(/usr/sbin/sendmail -oeml -i))"

OTHER MODULES THAT DO SIMILAR THINGS
   Send mail via SMTP: Mail::SMI, Mail::Transport::SMTP, Mail::SendEasy,
   Mail::Sender, Mail::Send, Mail::Sendmail.

   Send mail via /usr/sbin/sendmail: Mail::Transport::Sendmail.

   Send via various methods (but only one at a time): Mail::Mailer.

   Manage an outgoing mail spool: Mail::Spool.

AUTHOR
   Copyright (C) 2002-2006, David Muir Sharnoff <[email protected]> This
   module may be used and copied on the same terms as Perl itself.