]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 1246228 - Email addresses must not be encoded
authorFrédéric Buclin <LpSolit@gmail.com>
Tue, 5 Apr 2016 23:54:54 +0000 (01:54 +0200)
committerFrédéric Buclin <LpSolit@gmail.com>
Tue, 5 Apr 2016 23:54:54 +0000 (01:54 +0200)
r/a=dkl

Bugzilla/MIME.pm
attachment.cgi

index 7b5843a7894812829f8b1bc5a431063296707912..8c6c141bb7014ed9a732b5cab339ba19a2ff8715 100644 (file)
@@ -13,9 +13,6 @@ use warnings;
 
 use parent qw(Email::MIME);
 
-use Encode qw(encode);
-use Encode::MIME::Header;
-
 sub new {
     my ($class, $msg) = @_;
     state $use_utf8 = Bugzilla->params->{'utf8'};
@@ -79,20 +76,12 @@ sub as_string {
     # MIME-Version must be set otherwise some mailsystems ignore the charset
     $self->header_set('MIME-Version', '1.0') if !$self->header('MIME-Version');
 
-    # Encode the headers correctly in quoted-printable
+    # Encode the headers correctly.
     foreach my $header ($self->header_names) {
         my @values = $self->header($header);
-        # We don't recode headers that happen multiple times.
-        next if scalar(@values) > 1;
-        if (my $value = $values[0]) {
-            utf8::decode($value) unless $use_utf8 && utf8::is_utf8($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);
-            $self->header_set($header, $encoded);
-        }
+        $self->header_str_set($header, @values);
     }
 
     # Ensure the character-set and encoding is set correctly on single part
index 5db8f5909ca4d4d20a36a9abf80799ccb90eb3f6..40b0c9d3a4f7f595d1f47a64577a88bd4edaffb1 100755 (executable)
@@ -26,6 +26,7 @@ use Bugzilla::Attachment::PatchReader;
 use Bugzilla::Token;
 
 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