- my @list = ref $email ? @{$email} : $email;
- my $msg = new Mail::Send Subject=>"[DXSpider: $ref->{from}] $ref->{subject}";
- $msg->to(@list);
- my $fh = $msg->open;
- if ($fh) {
- print $fh "From: $ref->{from} To: $to On Node: $main::mycall Origin: $ref->{origin} Msgno: $ref->{msgno}\r\n\r\n";
- print $fh map {"$_\r\n"} $ref->read_msg_body;
- $fh->close;
- for (@list) {
- Log('msg', "Msgno $ref->{msgno} from $ref->{from} emailed to $_");
+ my @rcpt = ref $email ? @{$email} : $email;
+ my $fromaddr = $email_from || $main::myemail;
+ my @headers = ("To: $ref->{to}",
+ "From: $fromaddr",
+ "Subject: [DXSpider: $ref->{from}] $ref->{subject}",
+ "X-DXSpider-To: $ref->{to}",
+ "X-DXSpider-From: $ref->{from}\@$ref->{origin}",
+ "X-DXSpider-Gateway: $main::mycall"
+ );
+ my @data = ("Msgno: $ref->{msgno} To: $to From: $ref->{from}\@$ref->{origin} Gateway: $main::mycall",
+ "",
+ $ref->read_msg_body
+ );
+ my $msg;
+ undef $!;
+ if (*Net::SMTP && $email_server) {
+ $msg = Net::SMTP->new($email_server);
+ if ($msg) {
+ $msg->mail($fromaddr);
+ $msg->to(@rcpt);
+ $msg->data(map {"$_\n"} @headers, '', @data);
+ $msg->quit;
+ }
+ } elsif ($email_prog) {
+ $msg = new IO::File "|$email_prog " . join(' ', @rcpt);
+ if ($msg) {
+ print $msg map {"$_\r\n"} @headers, '', @data, '.';
+ $msg->close;