diff --git a/classes/mail/Mail.class.php b/classes/mail/Mail.class.php index abb7d13ae..347434786 100644 --- a/classes/mail/Mail.class.php +++ b/classes/mail/Mail.class.php @@ -115,7 +115,7 @@ class Mail extends Rhymix\Framework\Mail */ public function getPlainContent() { - return chunk_split(base64_encode(str_replace(array("<", ">", "&"), array("<", ">", "&"), $this->message->getBody()))); + return chunk_split(base64_encode(htmlspecialchars($this->message->getBody()))); } /** diff --git a/tests/unit/framework/MailTest.php b/tests/unit/framework/MailTest.php index 22ce3e938..f9e6b9e75 100644 --- a/tests/unit/framework/MailTest.php +++ b/tests/unit/framework/MailTest.php @@ -156,5 +156,21 @@ class MailTest extends \Codeception\TestCase\Test $mail->setBcc('bcc-1@rhymix.org'); $mail->setBcc('bcc-2@rhymix.org'); $this->assertEquals(array('bcc-2@rhymix.org' => ''), $mail->message->getBcc()); + + $content = '
Hello world!
This is a long message to test chunk splitting.
This feature is only available using the legacy Mail class.
'; + $mail->setBody($content); + $this->assertEquals(chunk_split(base64_encode($content)), $mail->getHTMLContent()); + $this->assertEquals(chunk_split(base64_encode(htmlspecialchars($content))), $mail->getPlainContent()); + + $mail->addAttachment(\RX_BASEDIR . 'tests/_data/formatter/minify.target.css', 'target.css'); + $cid = $mail->addCidAttachment(\RX_BASEDIR . 'tests/_data/formatter/minify.target.css', 'thisismyrandomcid@rhymix.org'); + $this->assertEquals('cid:thisismyrandomcid@rhymix.org', $cid); + + $attachments = $mail->getAttachments(); + $this->assertEquals(2, count($attachments)); + $this->assertEquals('attach', $attachments[0]->type); + $this->assertEquals('target.css', $attachments[0]->display_filename); + $this->assertEquals('embed', $attachments[1]->type); + $this->assertEquals('cid:thisismyrandomcid@rhymix.org', $attachments[1]->cid); } }