summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortravis%sedsystems.ca <>2005-02-02 05:00:17 +0100
committertravis%sedsystems.ca <>2005-02-02 05:00:17 +0100
commitd652763b3fe4ae1256736c188c203f80b3b8f8f8 (patch)
treee011462d07c9b31d8f1a169ed4b6497bc2683253
parent5bf561558211cc84c176b80a5b3cced32704139b (diff)
downloadbugzilla-d652763b3fe4ae1256736c188c203f80b3b8f8f8.tar.gz
bugzilla-d652763b3fe4ae1256736c188c203f80b3b8f8f8.tar.xz
Bug 277437 : Use Mail::Mailer (Perl module) for mail delivery
Patch by Andrei Benea <abenea@gmail.com> r=vladd a=justdave
-rw-r--r--Bugzilla/BugMail.pm31
-rwxr-xr-xchecksetup.pl7
-rw-r--r--defparams.pl18
3 files changed, 43 insertions, 13 deletions
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm
index 6b77f6d94..c682b4d5c 100644
--- a/Bugzilla/BugMail.pm
+++ b/Bugzilla/BugMail.pm
@@ -35,6 +35,9 @@ use Bugzilla::RelationSet;
use Bugzilla::Config qw(:DEFAULT $datadir);
use Bugzilla::Util;
+use Mail::Mailer;
+use Mail::Header;
+
# This code is really ugly. It was a commandline interface, then it was moved
# There are package-global variables which we rely on ProcessOneBug to clean
# up each time, and other sorts of fun.
@@ -877,23 +880,27 @@ sub NewProcessOnePerson ($$$$$$$$$$$$$) {
return 1;
}
-# XXX: Should eventually add $mail_from and $mail_to options to
-# control the SMTP Envelope. -mkanat
sub MessageToMTA ($) {
- my ($msg) = (@_);
+ my ($msg) = (@_);
+ return unless $enableSendMail;
- my $sendmailparam = "";
- unless (Param("sendmailnow")) {
- $sendmailparam = "-ODeliveryMode=deferred";
+ my @args;
+ if (Param("maildeliverymethod") eq "sendmail" && Param("sendmailnow")) {
+ push @args, "-ODeliveryMode=deferred";
+ }
+ if (Param("maildeliverymethod") eq "smtp") {
+ push @args, Server => Param("smtpserver");
}
+ my $mailer = new Mail::Mailer Param("maildeliverymethod"), @args;
- if ($enableSendMail == 1) {
- open(SENDMAIL, "|/usr/lib/sendmail $sendmailparam -t -i") ||
- die "Can't open sendmail";
+ $msg =~ /(.*?)\n\n(.*)/ms;
+ my @header_lines = split(/\n/, $1);
+ my $body = $2;
- print SENDMAIL trim($msg) . "\n";
- close SENDMAIL;
- }
+ my $headers = new Mail::Header \@header_lines, Modify => 0;
+ $mailer->open($headers->header_hashref);
+ print $mailer $msg;
+ $mailer->close;
}
1;
diff --git a/checksetup.pl b/checksetup.pl
index 1a8f46f55..daabfa8f4 100755
--- a/checksetup.pl
+++ b/checksetup.pl
@@ -302,7 +302,11 @@ my $modules = [
{
name => 'Text::Wrap',
version => '2001.0131'
- }
+ },
+ {
+ name => 'Mail::Mailer',
+ version => '1.65'
+ },
];
my %ppm_modules = (
@@ -318,6 +322,7 @@ my %ppm_modules = (
'GD' => 'GD',
'GD::Graph' => 'GDGraph',
'GD::Text::Align' => 'GDTextUtil',
+ 'Mail::Mailer' => 'MailTools',
);
sub install_command {
diff --git a/defparams.pl b/defparams.pl
index 29c4d27ad..fd681e966 100644
--- a/defparams.pl
+++ b/defparams.pl
@@ -671,6 +671,17 @@ sub find_languages {
},
{
+ name => 'maildeliverymethod',
+ desc => 'The method used for mail delivery. The testfile method ' .
+ 'is useful for debugging (for more information see the ' .
+ 'Mail::Mailer manual)',
+ type => 's',
+ choices => ['sendmail', 'smtp', 'qmail', 'testfile'],
+ default => 'sendmail',
+ checker => \&check_multi
+ },
+
+ {
name => 'sendmailnow',
desc => 'Sites using anything older than version 8.12 of \'sendmail\' ' .
'can achieve a significant performance increase in the ' .
@@ -684,6 +695,13 @@ sub find_languages {
},
{
+ name => 'smtpserver',
+ desc => 'The SMTP server address (if using SMTP for mail delivery).',
+ type => 't',
+ default => 'localhost'
+ },
+
+ {
name => 'passwordmail',
desc => 'The email that gets sent to people to tell them their password.' .
'Within this text, %mailaddress% gets replaced by the person\'s ' .