diff --git a/application/Emailnotification/Emailnotification.php b/application/Emailnotification/Emailnotification.php index 1fa645924..491567bf3 100644 --- a/application/Emailnotification/Emailnotification.php +++ b/application/Emailnotification/Emailnotification.php @@ -122,6 +122,18 @@ class Emailnotification { //$log->debug(print_r($headers, true)); $mail =& Mail::factory('mail', ["-f ".$this->email_from]); + /* + * PHP 8's mail() function now outputs proper line endings in headers (CRLF instead of LF). + * Mail_mail < 2.0 would detect a unix system and change the headers line ending to LF. + * On Mail submission to Exim (via sendmail), mail() adds its own headers first with CRLF line ending, + * making Exim treat every subsequent header's LF as an invalid line ending, adding a whitespace after the LF, + * making all our custom headers into one long header. + * + * See: https://www.exim.org/exim-html-current/doc/html/spec_html/ch-message_processing.html#SECTlineendings + * + * So we force CRLF line endings for headers here. + */ + $mail->sep = "\r\n"; $mail->send($this->email_to, $headers, $body); }