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 Mail::SendVarious 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 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.

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 <muir@idiom.com> Copyright (C) 2011-2012, Google Inc. This module may be used and copied on the same terms as Perl itself.