MDL-57474 mailer: Make sure that our exlicit MessageID is trimmed
authorDavid Mudrák <david@moodle.com>
Wed, 21 Dec 2016 00:11:32 +0000 (01:11 +0100)
committerDavid Mudrák <david@moodle.com>
Wed, 21 Dec 2016 00:20:52 +0000 (01:20 +0100)
The new version of phpmailer shipped with Moodle 3.2 has added check
that the explicitly provided MessageID matches /^<.*@.*>$/.

Values coming from our overridden moodle_phpmailer::addCustomHeader()
had a whitespace at the start. So the requested value was not used as
the Message-ID header and the default phpmailer value was used.

As a result, forum posts threading was broken in email clients.

lib/phpmailer/moodle_phpmailer.php

index a25b992..63abdeb 100644 (file)
@@ -74,10 +74,10 @@ class moodle_phpmailer extends PHPMailer {
      */
     public function addCustomHeader($custom_header, $value = null) {
         if ($value === null and preg_match('/message-id:(.*)/i', $custom_header, $matches)) {
-            $this->MessageID = $matches[1];
+            $this->MessageID = trim($matches[1]);
             return true;
         } else if ($value !== null and strcasecmp($custom_header, 'message-id') === 0) {
-            $this->MessageID = $value;
+            $this->MessageID = trim($value);
             return true;
         } else {
             return parent::addCustomHeader($custom_header, $value);