diff options
Diffstat (limited to 'cpan/lib/Mail/Mailer/smtp.pm')
| -rw-r--r-- | cpan/lib/Mail/Mailer/smtp.pm | 115 |
1 files changed, 67 insertions, 48 deletions
diff --git a/cpan/lib/Mail/Mailer/smtp.pm b/cpan/lib/Mail/Mailer/smtp.pm index 42eac5e4..aa5e4a87 100644 --- a/cpan/lib/Mail/Mailer/smtp.pm +++ b/cpan/lib/Mail/Mailer/smtp.pm @@ -1,84 +1,103 @@ +# Copyrights 1995-2017 by [Mark Overmeer <perl@overmeer.net>]. +# For other contributors see ChangeLog. +# See the manual pages for details on the licensing terms. +# Pod stripped from pm file by OODoc 2.02. +use strict; + package Mail::Mailer::smtp; -use vars qw(@ISA); +use vars '$VERSION'; +$VERSION = '2.19'; + +use base 'Mail::Mailer::rfc822'; + use Net::SMTP; use Mail::Util qw(mailaddress); use Carp; -require Mail::Mailer::rfc822; -@ISA = qw(Mail::Mailer::rfc822); - sub can_cc { 0 } sub exec { - my($self, $exe, $args, $to) = @_; + my ($self, $exe, $args, $to) = @_; my %opt = @$args; my $host = $opt{Server} || undef; $opt{Debug} ||= 0; - # for Net::SMTP we do not really exec my $smtp = Net::SMTP->new($host, %opt) or return undef; - ${*$self}{'sock'} = $smtp; - - $smtp->mail(mailaddress()); - my $u; - foreach $u (@$to) { - $smtp->to($u); + if($opt{Auth}) + { $smtp->auth(@{$opt{Auth}}) + or return undef; } + + ${*$self}{sock} = $smtp; + + $smtp->mail($opt{From} || mailaddress()); + $smtp->to($_) for @$to; $smtp->data; - untie(*$self) if tied *$self; - tie *$self, 'Mail::Mailer::smtp::pipe',$self; + + untie *$self if tied *$self; + tie *$self, 'Mail::Mailer::smtp::pipe', $self; $self; } -sub set_headers { - my($self,$hdrs) = @_; - $self->SUPER::set_headers({ - From => "<" . mailaddress() . ">", - %$hdrs, - 'X-Mailer' => "Mail::Mailer[v$Mail::Mailer::VERSION] Net::SMTP[v$Net::SMTP::VERSION]" - }) +sub set_headers($) +{ my ($self, $hdrs) = @_; + $self->SUPER::set_headers + ( { From => "<" . mailaddress() . ">" + , %$hdrs + , 'X-Mailer' => "Mail::Mailer[v$Mail::Mailer::VERSION] Net::SMTP[v$Net::SMTP::VERSION]" + } + ); } -sub epilogue { - my $self = shift; - my $sock = ${*$self}{'sock'}; - $sock->dataend; +sub epilogue() +{ my $self = shift; + my $sock = ${*$self}{sock}; + + my $ok = $sock->dataend; $sock->quit; - delete ${*$self}{'sock'}; - untie(*$self); + + delete ${*$self}{sock}; + untie *$self; + $ok; } -sub close { - my($self, @to) = @_; - my $sock = ${*$self}{'sock'}; - if ($sock && fileno($sock)) { - $self->epilogue; - # Epilogue should destroy the SMTP filehandle, - # but just to be on the safe side. - if ($sock && fileno($sock)) { - close $sock - or croak 'Cannot destroy socket filehandle'; - } - } - 1; +sub close(@) +{ my ($self, @to) = @_; + my $sock = ${*$self}{sock}; + + $sock && fileno $sock + or return 1; + + my $ok = $self->epilogue; + + # Epilogue should destroy the SMTP filehandle, + # but just to be on the safe side. + $sock && fileno $sock + or return $ok; + + close $sock + or croak 'Cannot destroy socket filehandle'; + + $ok; } package Mail::Mailer::smtp::pipe; +use vars '$VERSION'; +$VERSION = '2.19'; -sub TIEHANDLE { - my $pkg = shift; - my $self = shift; - my $sock = ${*$self}{'sock'}; - return bless \$sock; + +sub TIEHANDLE +{ my ($class, $self) = @_; + my $sock = ${*$self}{sock}; + bless \$sock, $class; } -sub PRINT { - my $self = shift; +sub PRINT +{ my $self = shift; my $sock = $$self; $sock->datasend( @_ ); } - 1; |
