Fix non-ASCII characters in email subject when transporting w/ PHP
authorTim Düsterhus <duesterhus@woltlab.com>
Thu, 23 Mar 2017 20:36:29 +0000 (21:36 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Mon, 27 Mar 2017 11:15:31 +0000 (13:15 +0200)
wcfsetup/install/files/lib/system/email/transport/PhpEmailTransport.class.php

index e1897425fa112d1224824078b1877fb66ca21ba2..932753168f0c44682da6d554ce421b536a2fe219 100644 (file)
@@ -2,6 +2,7 @@
 namespace wcf\system\email\transport;
 use wcf\system\email\transport\exception\TransientFailure;
 use wcf\system\email\Email;
+use wcf\system\email\EmailGrammar;
 use wcf\system\email\Mailbox;
 use wcf\util\StringUtil;
 
@@ -41,11 +42,13 @@ class PhpEmailTransport implements IEmailTransport {
                        return implode(': ', $item);
                }, $headers));
                
+               $encodedSubject = EmailGrammar::encodeQuotedPrintableHeader($email->getSubject());
+               
                if (MAIL_USE_F_PARAM) {
-                       $return = mail($envelopeTo->getAddress(), $email->getSubject(), StringUtil::unifyNewlines($email->getBodyString()), $headers, '-f'.$envelopeFrom->getAddress());
+                       $return = mail($envelopeTo->getAddress(), $encodedSubject, StringUtil::unifyNewlines($email->getBodyString()), $headers, '-f'.$envelopeFrom->getAddress());
                }
                else {
-                       $return = mail($envelopeTo->getAddress(), $email->getSubject(), StringUtil::unifyNewlines($email->getBodyString()), $headers);
+                       $return = mail($envelopeTo->getAddress(), $encodedSubject, StringUtil::unifyNewlines($email->getBodyString()), $headers);
                }
                
                if (!$return) {