]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 696005: Fix encoding of emails after extensions have hooked the email, not before
authorByron Jones <bjones@mozilla.com>
Wed, 30 Nov 2011 06:02:19 +0000 (14:02 +0800)
committerByron Jones <bjones@mozilla.com>
Wed, 30 Nov 2011 06:02:19 +0000 (14:02 +0800)
r=dkl, a=mkanat

Bugzilla/Mailer.pm

index 699467ed8ed67dc84c5ec83175ab22ea0ad03792..91530ce2077135b439551f6ac21f6b937dd6d3c3 100644 (file)
@@ -87,25 +87,6 @@ sub MessageToMTA {
     # thus to hopefully avoid auto replies.
     $email->header_set('Auto-Submitted', 'auto-generated');
 
-    $email->walk_parts(sub {
-        my ($part) = @_;
-        return if $part->parts > 1; # Top-level
-        my $content_type = $part->content_type || '';
-        if ($content_type !~ /;/) {
-            my $body = $part->body;
-            if (Bugzilla->params->{'utf8'}) {
-                $part->charset_set('UTF-8');
-                # encoding_set works only with bytes, not with utf8 strings.
-                my $raw = $part->body_raw;
-                if (utf8::is_utf8($raw)) {
-                    utf8::encode($raw);
-                    $part->body_set($raw);
-                }
-            }
-            $part->encoding_set('quoted-printable') if !is_7bit_clean($body);
-        }
-    });
-
     # MIME-Version must be set otherwise some mailsystems ignore the charset
     $email->header_set('MIME-Version', '1.0') if !$email->header('MIME-Version');
 
@@ -171,6 +152,25 @@ sub MessageToMTA {
     Bugzilla::Hook::process('mailer_before_send', 
                             { email => $email, mailer_args => \@args });
 
+    $email->walk_parts(sub {
+        my ($part) = @_;
+        return if $part->parts > 1; # Top-level
+        my $content_type = $part->content_type || '';
+        if ($content_type !~ /;/) {
+            my $body = $part->body;
+            if (Bugzilla->params->{'utf8'}) {
+                $part->charset_set('UTF-8');
+                # encoding_set works only with bytes, not with utf8 strings.
+                my $raw = $part->body_raw;
+                if (utf8::is_utf8($raw)) {
+                    utf8::encode($raw);
+                    $part->body_set($raw);
+                }
+            }
+            $part->encoding_set('quoted-printable') if !is_7bit_clean($body);
+        }
+    });
+
     if ($method eq "Test") {
         my $filename = bz_locations()->{'datadir'} . '/mailer.testfile';
         open TESTFILE, '>>', $filename;