summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/BugMail.pm18
-rw-r--r--Bugzilla/Flag.pm13
-rw-r--r--Bugzilla/Mailer.pm29
-rw-r--r--template/en/default/request/email.txt.tmpl1
4 files changed, 39 insertions, 22 deletions
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm
index 20bb7e254..4e91d4be4 100644
--- a/Bugzilla/BugMail.pm
+++ b/Bugzilla/BugMail.pm
@@ -636,22 +636,6 @@ sub sendMail {
push(@watchingrel, 'None') unless @watchingrel;
push @watchingrel, map { user_id_to_login($_) } @$watchingRef;
- my $sitespec = '@' . Bugzilla->params->{'urlbase'};
- $sitespec =~ s/:\/\//\./; # Make the protocol look like part of the domain
- $sitespec =~ s/^([^:\/]+):(\d+)/$1/; # Remove a port number, to relocate
- if ($2) {
- $sitespec = "-$2$sitespec"; # Put the port number back in, before the '@'
- }
- my $threadingmarker;
- if ($isnew) {
- $threadingmarker = "Message-ID: <bug-$id-" . $user->id . "$sitespec>";
- }
- else {
- $threadingmarker = "In-Reply-To: <bug-$id-" . $user->id . "$sitespec>" .
- "\nReferences: <bug-$id-" . $user->id . "$sitespec>";
- }
-
-
my $vars = {
isnew => $isnew,
to => $user->email,
@@ -678,7 +662,7 @@ sub sendMail {
reporter => $values{'reporter'},
reportername => Bugzilla::User->new({name => $values{'reporter'}})->name,
diffs => $diffs,
- threadingmarker => $threadingmarker
+ threadingmarker => build_thread_marker($id, $user->id, $isnew),
};
my $msg;
diff --git a/Bugzilla/Flag.pm b/Bugzilla/Flag.pm
index 73266ce9f..8201a907d 100644
--- a/Bugzilla/Flag.pm
+++ b/Bugzilla/Flag.pm
@@ -1104,10 +1104,15 @@ sub notify {
}
foreach my $to (keys %recipients) {
- my $vars = { 'flag' => $flag,
- 'to' => $to,
- 'bug' => $bug,
- 'attachment' => $attachment};
+ # Add threadingmarker to allow flag notification emails to be the
+ # threaded similar to normal bug change emails.
+ my $thread_user_id = $recipients{$to} ? $recipients{$to}->id : 0;
+
+ my $vars = { 'flag' => $flag,
+ 'to' => $to,
+ 'bug' => $bug,
+ 'attachment' => $attachment,
+ 'threadingmarker' => build_thread_marker($bug->id, $thread_user_id) };
my $lang = $recipients{$to} ?
$recipients{$to}->settings->{'lang'}->{'value'} : $default_lang;
diff --git a/Bugzilla/Mailer.pm b/Bugzilla/Mailer.pm
index 5c7a75450..c790d179f 100644
--- a/Bugzilla/Mailer.pm
+++ b/Bugzilla/Mailer.pm
@@ -35,7 +35,7 @@ package Bugzilla::Mailer;
use strict;
use base qw(Exporter);
-@Bugzilla::Mailer::EXPORT = qw(MessageToMTA);
+@Bugzilla::Mailer::EXPORT = qw(MessageToMTA build_thread_marker);
use Bugzilla::Constants;
use Bugzilla::Error;
@@ -154,4 +154,31 @@ sub MessageToMTA {
}
}
+# Builds header suitable for use as a threading marker in email notifications
+sub build_thread_marker {
+ my ($bug_id, $user_id, $is_new) = @_;
+
+ if (!defined $user_id) {
+ $user_id = Bugzilla->user->id;
+ }
+
+ my $sitespec = '@' . Bugzilla->params->{'urlbase'};
+ $sitespec =~ s/:\/\//\./; # Make the protocol look like part of the domain
+ $sitespec =~ s/^([^:\/]+):(\d+)/$1/; # Remove a port number, to relocate
+ if ($2) {
+ $sitespec = "-$2$sitespec"; # Put the port number back in, before the '@'
+ }
+
+ my $threadingmarker;
+ if ($is_new) {
+ $threadingmarker = "Message-ID: <bug-$bug_id-$user_id$sitespec>";
+ }
+ else {
+ $threadingmarker = "In-Reply-To: <bug-$bug_id-$user_id$sitespec>" .
+ "\nReferences: <bug-$bug_id-$user_id$sitespec>";
+ }
+
+ return $threadingmarker;
+}
+
1;
diff --git a/template/en/default/request/email.txt.tmpl b/template/en/default/request/email.txt.tmpl
index cb18c0f4f..81948c42c 100644
--- a/template/en/default/request/email.txt.tmpl
+++ b/template/en/default/request/email.txt.tmpl
@@ -49,6 +49,7 @@ Subject: [% flag.type.name %] [%+ subject_status %]: [[% terms.Bug %] [%+ bug.bu
[%- IF attachment %] :
[Attachment [% attachment.id %]] [% attachment.description %][% END %]
X-Bugzilla-Type: request
+[%+ threadingmarker %]
[%+ USE wrap -%]
[%- FILTER bullet = wrap(80) -%]