# PR 206103
# Upstream PR: https://bugzilla.mozilla.org/show_bug.cgi?id=1235395
Index: files/patch-Bugzilla_Mailer.pm
===================================================================
--- files/patch-Bugzilla_Mailer.pm.orig	2016-01-10 16:55:40 UTC
+++ files/patch-Bugzilla_Mailer.pm
@@ -0,0 +1,101 @@
+# Bug 1235395 - whine.pl broken due to a missing generate_email() routine
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1235395
+# Status: Upstreamed, pending next release
+
+--- Bugzilla/Mailer.pm.orig	2015-12-22 21:22:10 UTC
++++ Bugzilla/Mailer.pm
+@@ -12,13 +12,13 @@ use strict;
+ use warnings;
+ 
+ use parent qw(Exporter);
+-@Bugzilla::Mailer::EXPORT = qw(MessageToMTA build_thread_marker);
+-
++@Bugzilla::Mailer::EXPORT = qw(MessageToMTA build_thread_marker generate_email);
+ use Bugzilla::Constants;
+ use Bugzilla::Error;
+ use Bugzilla::Hook;
+ use Bugzilla::MIME;
+ use Bugzilla::Util;
++use Bugzilla::User;
+ 
+ use Date::Format qw(time2str);
+ 
+@@ -161,6 +161,67 @@ sub send_staged_mail {
+     }
+ }
+ 
++sub generate_email {
++    my ($vars, $templates) = @_;
++    my ($lang, $email_format, $msg_text, $msg_html, $msg_header);
++    state $use_utf8 = Bugzilla->params->{'utf8'};
++
++    if ($vars->{to_user}) {
++        $lang = $vars->{to_user}->setting('lang');
++        $email_format = $vars->{to_user}->setting('email_format');
++    } else {
++        # If there are users in the CC list who don't have an account,
++        # use the default language for email notifications.
++        $lang = Bugzilla::User->new()->setting('lang');
++        # However we cannot fall back to the default email_format, since
++        # it may be HTML, and many of the includes used in the HTML
++        # template require a valid user object. Instead we fall back to
++        # the plaintext template.
++        $email_format = 'text_only';
++    }
++
++    my $template = Bugzilla->template_inner($lang);
++
++    $template->process($templates->{header}, $vars, \$msg_header)
++        || ThrowTemplateError($template->error());
++    $template->process($templates->{text}, $vars, \$msg_text)
++        || ThrowTemplateError($template->error());
++
++    my @parts = (
++        Bugzilla::MIME->create(
++            attributes => {
++                content_type => 'text/plain',
++                charset      => $use_utf8 ? 'UTF-8' : 'iso-8859-1',
++                encoding     => 'quoted-printable',
++            },
++            body_str => $msg_text,
++        )
++    );
++    if ($templates->{html} && $email_format eq 'html') {
++        $template->process($templates->{html}, $vars, \$msg_html)
++            || ThrowTemplateError($template->error());
++        push @parts, Bugzilla::MIME->create(
++            attributes => {
++                content_type => 'text/html',
++                charset      => $use_utf8 ? 'UTF-8' : 'iso-8859-1',
++                encoding     => 'quoted-printable',
++            },
++            body_str => $msg_html,
++        );
++    }
++
++    my $email = Bugzilla::MIME->new($msg_header);
++    if (scalar(@parts) == 1) {
++        $email->content_type_set($parts[0]->content_type);
++    } else {
++        $email->content_type_set('multipart/alternative');
++        # Some mail clients need same encoding for each part, even empty ones.
++        $email->charset_set('UTF-8') if $use_utf8;
++    }
++    $email->parts_set(\@parts);
++    return $email;
++}
++
+ 1;
+ 
+ __END__
+@@ -173,6 +234,10 @@ Bugzilla::Mailer - Provides methods for 
+ 
+ =over
+ 
++=item C<generate_email>
++
++Generates a multi-part email message, using the supplied list of templates.
++
+ =item C<MessageToMTA>
+ 
+ Sends the passed message to the mail transfer agent.
--- files/patch-Bugzilla_Product.pm.orig	2016-01-10 16:55:40 UTC
+++ files/patch-Bugzilla_Product.pm
@@ -0,0 +1,14 @@
+# Bug 1235395 - whine.pl broken due to a missing generate_email() routine
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1235395
+# Status: Upstreamed, pending next release
+
+--- Bugzilla/Product.pm.orig	2015-12-22 21:22:10 UTC
++++ Bugzilla/Product.pm
+@@ -22,7 +22,6 @@ use Bugzilla::Milestone;
+ use Bugzilla::Field;
+ use Bugzilla::Status;
+ use Bugzilla::Install::Requirements;
+-use Bugzilla::Mailer;
+ use Bugzilla::Series;
+ use Bugzilla::Hook;
+ use Bugzilla::FlagType;
--- files/patch-whine.pl.orig	2016-01-10 16:55:40 UTC
+++ files/patch-whine.pl
@@ -0,0 +1,22 @@
+# Bug 1235395 - whine.pl broken due to a missing generate_email() routine
+# https://bugzilla.mozilla.org/show_bug.cgi?id=1235395
+# Status: Upstreamed, pending next release
+
+--- whine.pl.orig	2015-12-22 21:22:11 UTC
++++ whine.pl
+@@ -13,14 +13,13 @@
+ use 5.10.1;
+ use strict;
+ use warnings;
+-
+ use lib qw(. lib);
+ 
+ use Bugzilla;
+ use Bugzilla::Constants;
+ use Bugzilla::Search;
+ use Bugzilla::User;
+-use Bugzilla::Mailer;
++use Bugzilla::Mailer qw(MessageToMTA generate_email);
+ use Bugzilla::Util;
+ use Bugzilla::Group;
+ 
