Without this patch I'm not able to properly send emails as I have a non-ascii character in my name. Signed-off-by: Uwe Kleine-König <ukleinek@xxxxxxxxxxxxxxxxxxxxxxxxxx> --- As I'm not a perl profi, someone wants to check this code. Actually this series is a test, as it is sended with the patched send-email. I hope it works :-) Uwe git-send-email.perl | 24 +++++++++++++++++++----- 1 files changed, 19 insertions(+), 5 deletions(-) diff --git a/git-send-email.perl b/git-send-email.perl index 89f7c36..8b3d450 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -459,16 +459,30 @@ sub unquote_rfc2047 { return "$_"; } -# If an address contains a . in the name portion, the name must be quoted. +# If an address contains a non-ascii char in the name port, quote it according +# to rfc2047. +# If an address contains a . in the name portion, the name must be quoted using +# double quotes. sub sanitize_address_rfc822 { my ($recipient) = @_; - my ($recipient_name) = ($recipient =~ /^(.*?)\s+</); + my ($recipient_name, $recipient_addr) = ($recipient =~ /^(.*?)(\s+<.*)/); + + if ($recipient_name && $recipient_name =~ /[^-a-zA-Z0-9!*+\/ ]/ && $recipient_name !~ /=\?utf-8\?q?.*\?=/) { + $recipient_name =~ s/([^-a-zA-Z0-9!*+ ])/sprintf("=%02X", ord($1))/eg; + $recipient_name =~ s/ /_/; + $recipient_name =~ s/(.*)/=\?utf-8\?q\?$1\?=/; + } + if ($recipient_name && $recipient_name =~ /\./ && $recipient_name !~ /^".*"$/) { - my ($name, $addr) = ($recipient =~ /^(.*?)(\s+<.*)/); - $recipient = "\"$name\"$addr"; + $recipient_name = "\"$recipient_name\""; + } + + if ($recipient_name) { + return "$recipient_name$recipient_addr"; + } else { + return "$recipient"; } - return $recipient; } sub send_message -- 1.5.3.rc0.823.gdedbf - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html