=encoding utf8
=head1 NAME
Mail::Mailer - send simple emails
=head1 INHERITANCE
Mail::Mailer
is an IO::Handle
=head1 SYNOPSIS
use Mail::Mailer;
use Mail::Mailer qw(mail); # specifies default mailer
$mailer = Mail::Mailer->new;
$mailer = Mail::Mailer->new($type, @args);
$mailer->open(\%headers);
print $mailer $body;
$mailer->close
or die "couldn't send whole message: $!\n";
=head1 DESCRIPTION
Sends mail using any of the built-in methods. As TYPE argument
to L<new()|Mail::Mailer/"Constructors">, you can specify any of
=over 4
=item C<sendmail>
Use the C<sendmail> program to deliver the mail.
=item C<smtp>
Use the C<smtp> protocol via Net::SMTP to deliver the mail. The server
to use can be specified in C<@args> with
$mailer = Mail::Mailer->new('smtp', Server => $server);
The smtp mailer does not handle C<Cc> and C<Bcc> lines, neither their
C<Resent-*> fellows. The C<Debug> options enables debugging output
from C<Net::SMTP>.
[added 2.21] You may also use the C<< StartTLS => 1 >> options to upgrade
the connection with STARTTLS. The same for option C<< SSL => 1 >>.
You may also use the C<< Auth => [ $user, $password ] >> option for SASL
authentication. To make this work, you have to install the L<Authen::SASL>
distribution yourself: it is not automatically installed.
=item C<smtps>
This option is B<deprecated> when you have C<libnet> 1.28 (2014) and above.
Use the smtp over ssl protocol via L<Net::SMTP::SSL> to deliver the mail.
Usage is identical to C<smtp>. You have to install Authen::SASL as
well.
$mailer = Mail::Mailer->new('smtps', Server => $server);
=item C<qmail>
Use qmail's qmail-inject program to deliver the mail.
=item C<testfile>
Used for debugging, this displays the data to the file named in
C<$Mail::Mailer::testfile::config{outfile}> which defaults to a file
named C<mailer.testfile>. No mail is ever sent.
=back
C<Mail::Mailer> will search for executables in the above order. The
default mailer will be the first one found.
=head1 METHODS
=head2 Constructors
=over 4
=item Mail::Mailer-E<gt>B<new>($type, %options)
The $type is one of the back-end sender implementations, as described in
the DESCRIPTION chapter of this manual page. The %options are passed to
that back-end.
=item $obj-E<gt>B<open>(HASH)
The HASH consists of key and value pairs, the key being the name of
the header field (eg, C<To>), and the value being the corresponding
contents of the header field. The value can either be a scalar
(eg, C<[email protected]>) or a reference to an array of scalars
(C<< eg, ['[email protected]', '[email protected]'] >>).
=back
=head1 DETAILS
=head2 ENVIRONMENT VARIABLES
=over 4
=item PERL_MAILERS
Augments/override the build in choice for binary used to send out
our mail messages.
Format:
"type1:mailbinary1;mailbinary2;...:type2:mailbinaryX;...:..."
Example: assume you want you use private sendmail binary instead
of mailx, one could set C<PERL_MAILERS> to:
"mail:/does/not/exists:sendmail:$HOME/test/bin/sendmail"
On systems which may include C<:> in file names, use C<|> as separator
between type-groups.
"mail:c:/does/not/exists|sendmail:$HOME/test/bin/sendmail"
=back
=head2 BUGS
Mail::Mailer does not help with folding, and does not protect
against various web-script hacker attacks, for instance where
a new-line is inserted in the content of the field.
=head1 SEE ALSO
This module is part of the MailTools distribution,
F<http://perl.overmeer.net/mailtools/>.
=head1 AUTHORS
The MailTools bundle was developed by Graham Barr. Later, Mark
Overmeer took over maintenance without commitment to further development.
Mail::Cap by Gisle Aas E<lt>[email protected]<gt>.
Mail::Field::AddrList by Peter Orbaek E<lt>[email protected]<gt>.
Mail::Mailer and Mail::Send by Tim Bunce E<lt>[email protected]<gt>.
For other contributors see ChangeLog.
=head1 LICENSE
Copyrights 1995-2000 Graham Barr E<lt>[email protected]<gt> and
2001-2024 Mark Overmeer E<lt>[email protected]<gt>.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
See F<http://www.perl.com/perl/misc/Artistic.html>