]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1246228 - Email addresses must not be encoded
authorFrédéric Buclin <LpSolit@gmail.com>
Fri, 13 May 2016 18:30:42 +0000 (20:30 +0200)
committerFrédéric Buclin <LpSolit@gmail.com>
Fri, 13 May 2016 18:30:42 +0000 (20:30 +0200)
r/a=dkl

Bugzilla/Mailer.pm
attachment.cgi

index 64640150ba3cd68bc5d823abfb7152f3317921d7..1149eb0adabcfc60a4c00c69b2e1813abf3aca62 100644 (file)
@@ -19,8 +19,6 @@ use Bugzilla::Util;
 
 use Date::Format qw(time2str);
 
-use Encode qw(encode);
-use Encode::MIME::Header;
 use Email::Address;
 use Email::MIME;
 # Return::Value 1.666002 pollutes the error log with warnings about this
@@ -71,22 +69,12 @@ sub MessageToMTA {
     # MIME-Version must be set otherwise some mailsystems ignore the charset
     $email->header_set('MIME-Version', '1.0') if !$email->header('MIME-Version');
 
-    # Encode the headers correctly in quoted-printable
+    # Encode the headers correctly.
     foreach my $header ($email->header_names) {
         my @values = $email->header($header);
-        # We don't recode headers that happen multiple times.
-        next if scalar(@values) > 1;
-        if (my $value = $values[0]) {
-            if (Bugzilla->params->{'utf8'} && !utf8::is_utf8($value)) {
-                utf8::decode($value);
-            }
-
-            # avoid excessive line wrapping done by Encode.
-            local $Encode::Encoding{'MIME-Q'}->{'bpl'} = 998;
+        map { utf8::decode($_) if defined($_) && !utf8::is_utf8($_) } @values;
 
-            my $encoded = encode('MIME-Q', $value);
-            $email->header_set($header, $encoded);
-        }
+        $email->header_str_set($header, @values);
     }
 
     my $from = $email->header('From');
index e003e1f12c8088b295085241f902dbca47a70ee3..319e46ffb076a3613570ea54c2076a39afb83f88 100755 (executable)
@@ -31,6 +31,7 @@ use Bugzilla::Token;
 use Bugzilla::Keyword;
 
 use Encode qw(encode find_encoding);
+use Encode::MIME::Header; # Required to alter Encode::Encoding{'MIME-Q'}.
 
 # For most scripts we don't make $cgi and $template global variables. But
 # when preparing Bugzilla for mod_perl, this script used these