1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
# NOTE: Derived from blib/lib/Mail/Internet.pm.
# Changes made here will be lost when autosplit again.
# See AutoSplit.pm.
package Mail::Internet;
#line 559 "blib/lib/Mail/Internet.pm (autosplit into blib/lib/auto/Mail/Internet/smtpsend.al)"
sub smtpsend;
use Carp;
use Mail::Util qw(mailaddress);
use Mail::Address;
use Net::Domain qw(hostname);
use Net::SMTP;
use strict;
sub smtpsend
{
my $src = shift;
my %opt = @_;
my $host = $opt{Host};
my $noquit = 0;
my $smtp;
my @hello = defined $opt{Hello} ? (Hello => $opt{Hello}) : ();
push(@hello, 'Port', $opt{'Port'})
if exists $opt{'Port'};
push(@hello, 'Debug', $opt{'Debug'})
if exists $opt{'Debug'};
unless(defined($host)) {
local $SIG{__DIE__};
my @hosts = qw(mailhost localhost);
unshift(@hosts, split(/:/, $ENV{SMTPHOSTS})) if(defined $ENV{SMTPHOSTS});
foreach $host (@hosts) {
$smtp = eval { Net::SMTP->new($host, @hello) };
last if(defined $smtp);
}
}
elsif(ref($host) && UNIVERSAL::isa($host,'Net::SMTP')) {
$smtp = $host;
$noquit = 1;
}
else {
local $SIG{__DIE__};
$smtp = eval { Net::SMTP->new($host, @hello) };
}
return ()
unless(defined $smtp);
my $hdr = $src->head->dup;
_prephdr($hdr);
# Who is it to
my @rcpt = map { ref($_) ? @$_ : $_ } grep { defined } @opt{'To','Cc','Bcc'};
@rcpt = map { $hdr->get($_) } qw(To Cc Bcc)
unless @rcpt;
my @addr = map($_->address, Mail::Address->parse(@rcpt));
return ()
unless(@addr);
$hdr->delete('Bcc'); # Remove blind Cc's
# Send it
my $ok = $smtp->mail( mailaddress() ) &&
$smtp->to(@addr) &&
$smtp->data(join("", @{$hdr->header},"\n",@{$src->body}));
$smtp->quit
unless $noquit;
$ok ? @addr : ();
}
# end of Mail::Internet::smtpsend
1;
|