Fix earlier mismerges.
[gitweb.git] / git-send-email.perl
index 85ec5df13ab1cb5868ab781e8b68d283f006e020..a7a77977787d1d1fcc98d9fa4dc745162d6fde04 100755 (executable)
@@ -21,7 +21,6 @@
 use Term::ReadLine;
 use Getopt::Long;
 use Data::Dumper;
-use Net::SMTP;
 
 # most mail servers generate the Date: header, but not all...
 $ENV{LC_ALL} = 'C';
@@ -315,14 +314,15 @@ sub extract_valid_address {
        my $address = shift;
 
        # check for a local address:
-       return $address if ($address =~ /^([\w\-]+)$/);
+       return $address if ($address =~ /^([\w\-.]+)$/);
 
        if ($have_email_valid) {
                return Email::Valid->address($address);
        } else {
                # less robust/correct than the monster regexp in Email::Valid,
                # but still does a 99% job, and one less dependency
-               return ($address =~ /([^\"<>\s]+@[^<>\s]+)/);
+               $address =~ /([\w\-.]+@[\w\-.]+)/;
+               return $1;
        }
 }
 
@@ -383,11 +383,14 @@ sub send_message
                my $pid = open my $sm, '|-';
                defined $pid or die $!;
                if (!$pid) {
-                       exec($smtp_server,'-i',@recipients) or die $!;
+                       exec($smtp_server,'-i',
+                            map { scalar extract_valid_address($_) }
+                            @recipients) or die $!;
                }
                print $sm "$header\n$message";
                close $sm or die $?;
        } else {
+               require Net::SMTP;
                $smtp ||= Net::SMTP->new( $smtp_server );
                $smtp->mail( $from ) or die $smtp->message;
                $smtp->to( @recipients ) or die $smtp->message;
@@ -416,6 +419,7 @@ sub send_message
 }
 
 $reply_to = $initial_reply_to;
+$references = $initial_reply_to || '';
 make_message_id();
 $subject = $initial_subject;