]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 467920: Remove multiple CRs in a row from the email template and make sure a
authormkanat%bugzilla.org <>
Sun, 22 Feb 2009 00:45:22 +0000 (00:45 +0000)
committermkanat%bugzilla.org <>
Sun, 22 Feb 2009 00:45:22 +0000 (00:45 +0000)
ll email lines end in CRLF.
Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=glob, a=mkanat

Bugzilla/Mailer.pm

index 7b673440b0552f8c96c26277a2b7eef026c512e9..645e65e4e048b749ef7e2d3e2d412dca98d0bf8a 100644 (file)
@@ -56,7 +56,20 @@ sub MessageToMTA {
     my $method = Bugzilla->params->{'mail_delivery_method'};
     return if $method eq 'None';
 
-    my $email = ref($msg) ? $msg : Email::MIME->new($msg);
+    my $email;
+    if (ref $msg) {
+        $email = $msg;
+    }
+    else {
+        # RFC 2822 requires us to have CRLF for our line endings and
+        # Email::MIME doesn't do this for us. We use \015 (CR) and \012 (LF)
+        # directly because Perl translates "\n" depending on what platform
+        # you're running on. See http://perldoc.perl.org/perlport.html#Newlines
+        # We check for multiple CRs because of this Template-Toolkit bug:
+        # https://rt.cpan.org/Ticket/Display.html?id=43345
+        $msg =~ s/(?:\015+)?\012/\015\012/msg;
+        $email = new Email::MIME($msg);
+    }
 
     # We add this header to mark the mail as "auto-generated" and
     # thus to hopefully avoid auto replies.