Commit 26a693ad authored by Dylan Hardison's avatar Dylan Hardison

Bug 1235395 - whine.pl broken due to a missing generate_email() routine

r=lpsolit,a=dylan
parent 15cc0879
......@@ -12,13 +12,14 @@ 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);
......@@ -26,6 +27,67 @@ use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP::Persistent;
use Bugzilla::Sender::Transport::Sendmail;
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;
}
sub MessageToMTA {
my ($msg, $send_now) = (@_);
my $method = Bugzilla->params->{'mail_delivery_method'};
......@@ -173,6 +235,10 @@ Bugzilla::Mailer - Provides methods for sending email
=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.
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment