summaryrefslogtreecommitdiff
path: root/cpan/lib/Mail/Mailer/smtp.pm
diff options
context:
space:
mode:
Diffstat (limited to 'cpan/lib/Mail/Mailer/smtp.pm')
-rw-r--r--cpan/lib/Mail/Mailer/smtp.pm115
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;