diff options
author | travis%sedsystems.ca <> | 2005-02-02 05:00:17 +0100 |
---|---|---|
committer | travis%sedsystems.ca <> | 2005-02-02 05:00:17 +0100 |
commit | d652763b3fe4ae1256736c188c203f80b3b8f8f8 (patch) | |
tree | e011462d07c9b31d8f1a169ed4b6497bc2683253 | |
parent | 5bf561558211cc84c176b80a5b3cced32704139b (diff) | |
download | bugzilla-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.pm | 31 | ||||
-rwxr-xr-x | checksetup.pl | 7 | ||||
-rw-r--r-- | defparams.pl | 18 |
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 ' . |