summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormkanat%bugzilla.org <>2008-10-20 07:04:40 +0200
committermkanat%bugzilla.org <>2008-10-20 07:04:40 +0200
commitc7b13764e9ee14e1144fb9e1c266844480e09575 (patch)
tree03fdab52ddd2f6d31205e28d4e0b1fb5f15a9207
parentb816ccdbcd69fe73a2fcd58cd13fe620d5fcb1d0 (diff)
downloadbugzilla-c7b13764e9ee14e1144fb9e1c266844480e09575.tar.gz
bugzilla-c7b13764e9ee14e1144fb9e1c266844480e09575.tar.xz
Bug 460590: Add a hook in Bugzilla::Mailer right before mail is sent
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, a=LpSolit
-rw-r--r--Bugzilla/Hook.pm12
-rw-r--r--Bugzilla/Mailer.pm3
-rw-r--r--extensions/example/code/mailer-before_send.pl28
3 files changed, 43 insertions, 0 deletions
diff --git a/Bugzilla/Hook.pm b/Bugzilla/Hook.pm
index e7697b42d..a4436392b 100644
--- a/Bugzilla/Hook.pm
+++ b/Bugzilla/Hook.pm
@@ -450,6 +450,18 @@ database when run.
=back
+=head2 mailer-before_send
+
+Called right before L<Bugzilla::Mailer> sends a message to the MTA.
+
+Params:
+
+=over
+
+=item C<email> - The C<Email::MIME> object that's about to be sent.
+
+=back
+
=head2 webservice
This hook allows you to add your own modules to the WebService. (See
diff --git a/Bugzilla/Mailer.pm b/Bugzilla/Mailer.pm
index bb0917bc1..1ffbd44e3 100644
--- a/Bugzilla/Mailer.pm
+++ b/Bugzilla/Mailer.pm
@@ -39,6 +39,7 @@ use base qw(Exporter);
use Bugzilla::Constants;
use Bugzilla::Error;
+use Bugzilla::Hook;
use Bugzilla::Util;
use Date::Format qw(time2str);
@@ -155,6 +156,8 @@ sub MessageToMTA {
Debug => Bugzilla->params->{'smtp_debug'};
}
+ Bugzilla::Hook::process('mailer-before_send', { email => $email });
+
if ($method eq "Test") {
my $filename = bz_locations()->{'datadir'} . '/mailer.testfile';
open TESTFILE, '>>', $filename;
diff --git a/extensions/example/code/mailer-before_send.pl b/extensions/example/code/mailer-before_send.pl
new file mode 100644
index 000000000..322c78088
--- /dev/null
+++ b/extensions/example/code/mailer-before_send.pl
@@ -0,0 +1,28 @@
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public
+# License Version 1.1 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS
+# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+# implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code is the Bugzilla Example Plugin.
+#
+# The Initial Developer of the Original Code is Everything Solved, Inc.
+# Portions created by the Initial Developer are Copyright (C) 2008
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s): Max Kanat-Alexander <mkanat@bugzilla.org>
+
+use strict;
+use warnings;
+use Bugzilla;
+my $email = Bugzilla->hook_args->{email};
+# If you add a header to an email, it's best to start it with
+# 'X-Bugzilla-<Extension>' so that you don't conflict with
+# other extensions.
+$email->header_set('X-Bugzilla-Example-Header', 'Example');