From a2ad0bd9b5949542a685e4ee833252b6184961d9 Mon Sep 17 00:00:00 2001 From: Thomas Hochstein Date: Sun, 13 Oct 2019 13:15:27 +0200 Subject: [PATCH] Fix mangling of auto-generated mails. s9y will encode the body of its auto-generated mails as quoted-printable when imap_8bit() is available. imap_8bit() will use "\r\n" as linebreaks as mandated for SMTP transfer. The result will be transmitted via PHP's mail() function, using direct SMTP on Windows and piping it to a MTA on Unix. Most MTAs will cope just fine with those linebreaks, while qmail will not; it will replace all "\n" linebreaks with "\r\n", so we get "\r\r\n" in our case. We can't "fix" qmail (as its maintainer, if there even is one, does not consider this behaviour wrong), but we can replace the line endings we get from imap_8bit(). The fix does work with qmail and Exim and should work with sendmail and Postfix and other MTAs, too. It may break sending mail on Windows (i.e. lose all linebreaks), but I think that's acceptable, as we'll have more qmail installation than Windows servers out there. A workaround could be to set serendipity['forceBase64']=true in serendipity_config_local.inc.php, but I'd prefer this fix. Fixes #644. Backported from master branch. Signed-off-by: Thomas Hochstein --- docs/NEWS | 5 +++++ include/functions.inc.php | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/NEWS b/docs/NEWS index 8a2b6a4b5..f0930a89e 100644 --- a/docs/NEWS +++ b/docs/NEWS @@ -1,6 +1,11 @@ Version 2.3.2-beta1 () ------------------------------------------------------------------------ + * Fix: Auto-generated mails submitted to qmail as MTA will get + mangled if encoded to quoted-printable due to qmail + changing "\r\n" linebreaks to "\r\r\n". Submit just "\n" + as linebreaks; other MTAs should cope with that. + * fix: Rotating an image did not rotate all responsive thumbnails * fix: The wysiwyg editor stripped the figcaption element used diff --git a/include/functions.inc.php b/include/functions.inc.php index eb72a6076..545484e79 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -538,7 +538,7 @@ function serendipity_sendMail($to, $subject, $message, $fromMail, $headers = NUL if (LANG_CHARSET == 'UTF-8') { if (function_exists('imap_8bit') && !$serendipity['forceBase64']) { $maildata['headers'][] = 'Content-Transfer-Encoding: quoted-printable'; - $maildata['message'] = imap_8bit($maildata['message']); + $maildata['message'] = str_replace("\r\n","\n",imap_8bit($maildata['message'])); } else { $maildata['headers'][] = 'Content-Transfer-Encoding: base64'; $maildata['message'] = chunk_split(base64_encode($maildata['message']));