diff options
Diffstat (limited to 'cpan/lib/Mail/Mailer')
| -rw-r--r-- | cpan/lib/Mail/Mailer/qmail.pm | 9 | ||||
| -rw-r--r-- | cpan/lib/Mail/Mailer/rfc822.pm | 7 | ||||
| -rw-r--r-- | cpan/lib/Mail/Mailer/smtp.pm | 17 |
3 files changed, 28 insertions, 5 deletions
diff --git a/cpan/lib/Mail/Mailer/qmail.pm b/cpan/lib/Mail/Mailer/qmail.pm new file mode 100644 index 00000000..ea312606 --- /dev/null +++ b/cpan/lib/Mail/Mailer/qmail.pm @@ -0,0 +1,9 @@ +package Mail::Mailer::qmail; +use vars qw(@ISA); +require Mail::Mailer::rfc822; +@ISA = qw(Mail::Mailer::rfc822); + +sub exec { + my($self, $exe, $args, $to) = @_; + exec(( $exe )); +} diff --git a/cpan/lib/Mail/Mailer/rfc822.pm b/cpan/lib/Mail/Mailer/rfc822.pm index dcb0dbca..fa59d0fe 100644 --- a/cpan/lib/Mail/Mailer/rfc822.pm +++ b/cpan/lib/Mail/Mailer/rfc822.pm @@ -8,7 +8,12 @@ sub set_headers { local($\)=""; foreach(keys %$hdrs) { next unless m/^[A-Z]/; - print $self "$_: ", join(",", $self->to_array($hdrs->{$_})), "\n"; + + my ($h); + foreach $h ($self->to_array($hdrs->{$_})) + { $h =~ s/\n+\Z//; + print $self "$_: ", $h, "\n"; + } } print $self "\n"; # terminate headers } diff --git a/cpan/lib/Mail/Mailer/smtp.pm b/cpan/lib/Mail/Mailer/smtp.pm index 6db78fa4..42eac5e4 100644 --- a/cpan/lib/Mail/Mailer/smtp.pm +++ b/cpan/lib/Mail/Mailer/smtp.pm @@ -2,6 +2,7 @@ package Mail::Mailer::smtp; use vars qw(@ISA); use Net::SMTP; use Mail::Util qw(mailaddress); +use Carp; require Mail::Mailer::rfc822; @ISA = qw(Mail::Mailer::rfc822); @@ -10,10 +11,12 @@ sub can_cc { 0 } sub exec { my($self, $exe, $args, $to) = @_; - my %opt = @$args; - my $host = $opt{'Server'} || undef; + 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, Debug => 0) + my $smtp = Net::SMTP->new($host, %opt) or return undef; ${*$self}{'sock'} = $smtp; @@ -52,8 +55,14 @@ sub close { my $sock = ${*$self}{'sock'}; if ($sock && fileno($sock)) { $self->epilogue; - close($sock); + # 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; } package Mail::Mailer::smtp::pipe; |
