+#this kludges a "mysmtpsend" method into Mail::Internet for send_email above
+#now updated for MailTools v2!
+package Mail::Internet;
+
+use Mail::Address;
+use Net::SMTP;
+use Net::Domain;
+
+sub Mail::Internet::mysmtpsend($@) {
+ my ($self, %opt) = @_;
+
+ my $host = $opt{Host};
+ my $envelope = $opt{MailFrom}; # || mailaddress();
+ my $quit = 1;
+
+ my ($smtp, @hello);
+
+ push @hello, Hello => $opt{Hello}
+ if defined $opt{Hello};
+
+ push @hello, Port => $opt{Port}
+ if exists $opt{Port};
+
+ push @hello, Debug => $opt{Debug}
+ if exists $opt{Debug};
+
+# if(!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'))
+ if(ref($host) && UNIVERSAL::isa($host,'Net::SMTP'))
+ { $smtp = $host;
+ $quit = 0;
+ }
+ else
+ { #local $SIG{__DIE__};
+ #$smtp = eval { Net::SMTP->new($host, @hello) };
+ $smtp = Net::SMTP->new($host, @hello);
+ }
+
+ unless ( defined($smtp) ) {
+ my $err = $!;
+ $err =~ s/Invalid argument/Unknown host/;
+ return "can't connect to $host: $err"
+ }
+
+ my $head = $self->cleaned_header_dup;
+
+ $head->delete('Bcc');
+
+ # Who is it to
+
+ my @rcpt = map { ref $_ ? @$_ : $_ } grep { defined } @opt{'To','Cc','Bcc'};
+ @rcpt = map { $head->get($_) } qw(To Cc Bcc)
+ unless @rcpt;
+
+ my @addr = map {$_->address} Mail::Address->parse(@rcpt);
+ #@addr or return ();
+ return 'No valid destination addresses found!'
+ unless(@addr);
+
+ # Send it
+
+ my $ok = $smtp->mail($envelope)
+ && $smtp->to(@addr)
+ && $smtp->data(join("", @{$head->header}, "\n", @{$self->body}));
+
+ #$quit && $smtp->quit;
+ #$ok ? @addr : ();
+ if ( $ok ) {
+ $quit && $smtp->quit;
+ return '';
+ } else {
+ return $smtp->code. ' '. $smtp->message;
+ }
+}
+package FS::Misc;
+#eokludge
+