From 2177dd933059c3e7ca5eb17c115f8cfd553157ff Mon Sep 17 00:00:00 2001 From: Byron Jones Date: Wed, 25 Jan 2012 15:14:48 +0800 Subject: Backing out Bug 714724 --- Bugzilla/Mailer.pm | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'Bugzilla/Mailer.pm') diff --git a/Bugzilla/Mailer.pm b/Bugzilla/Mailer.pm index 1e4079488..10a456dd6 100644 --- a/Bugzilla/Mailer.pm +++ b/Bugzilla/Mailer.pm @@ -83,16 +83,6 @@ sub MessageToMTA { } } - $email->walk_parts(sub { - my ($part) = @_; - return if $part->parts > 1; # Top-level - my $content_type = $part->content_type || ''; - if ($content_type !~ /;/) { - $part->charset_set('UTF-8') if Bugzilla->params->{'utf8'}; - $part->encoding_set('8bit') if !is_7bit_clean($part->body); - } - }); - my $from = $email->header('From'); my ($hostname, @args); @@ -137,6 +127,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; -- cgit v1.2.3-24-g4f1b