Cleanup git-send-email.perl:extract_valid_email
[git.git] / git-send-email.perl
index d418d6c..a7a7797 100755 (executable)
@@ -21,7 +21,6 @@ use warnings;
 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,18 +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
-               my $cleaned_address;
-               if ($address =~ /([^\"<>\s]+@[^<>\s]+)/) {
-                       $cleaned_address = $1;
-               }
-               return $cleaned_address;
+               $address =~ /([\w\-.]+@[\w\-.]+)/;
+               return $1;
        }
 }
 
@@ -387,11 +383,14 @@ X-Mailer: git-send-email $gitversion
                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;
@@ -420,7 +419,7 @@ X-Mailer: git-send-email $gitversion
 }
 
 $reply_to = $initial_reply_to;
-$references = $initial_reply_to;
+$references = $initial_reply_to || '';
 make_message_id();
 $subject = $initial_subject;