diff --git a/lib/internal/Magento/Framework/Mail/Message.php b/lib/internal/Magento/Framework/Mail/Message.php index 71da6e673bf29..a9996c0a4f12a 100644 --- a/lib/internal/Magento/Framework/Mail/Message.php +++ b/lib/internal/Magento/Framework/Mail/Message.php @@ -23,7 +23,7 @@ class Message implements MailMessageInterface * * @var string */ - private $messageType = self::TYPE_TEXT; + private $messageType = Mime::TYPE_TEXT; /** * Initialize dependencies. @@ -58,8 +58,8 @@ public function setMessageType($type) */ public function setBody($body) { - if (is_string($body) && $this->messageType === MailMessageInterface::TYPE_HTML) { - $body = self::createHtmlMimeFromString($body); + if (is_string($body)) { + $body = self::createMimeFromString($body, $this->messageType); } $this->zendMessage->setBody($body); return $this; @@ -157,18 +157,19 @@ public function getRawMessage() } /** - * Create HTML mime message from the string. + * Create mime message from the string. * - * @param string $htmlBody + * @param string $body + * @param string $messageType * @return \Zend\Mime\Message */ - private function createHtmlMimeFromString($htmlBody) + private function createMimeFromString($body, $messageType) { - $htmlPart = new Part($htmlBody); - $htmlPart->setCharset($this->zendMessage->getEncoding()); - $htmlPart->setType(Mime::TYPE_HTML); + $part = new Part($body); + $part->setCharset($this->zendMessage->getEncoding()); + $part->setType($messageType); $mimeMessage = new \Zend\Mime\Message(); - $mimeMessage->addPart($htmlPart); + $mimeMessage->addPart($part); return $mimeMessage; } @@ -177,7 +178,7 @@ private function createHtmlMimeFromString($htmlBody) */ public function setBodyHtml($html) { - $this->setMessageType(self::TYPE_HTML); + $this->setMessageType(Mime::TYPE_HTML); return $this->setBody($html); } @@ -186,7 +187,7 @@ public function setBodyHtml($html) */ public function setBodyText($text) { - $this->setMessageType(self::TYPE_TEXT); + $this->setMessageType(Mime::TYPE_TEXT); return $this->setBody($text); } } diff --git a/lib/internal/Magento/Framework/Mail/Test/Unit/MessageTest.php b/lib/internal/Magento/Framework/Mail/Test/Unit/MessageTest.php index 0c33e25e0d9d0..bea2a9ea91d38 100644 --- a/lib/internal/Magento/Framework/Mail/Test/Unit/MessageTest.php +++ b/lib/internal/Magento/Framework/Mail/Test/Unit/MessageTest.php @@ -5,44 +5,40 @@ */ namespace Magento\Framework\Mail\Test\Unit; +/** + * test Magento\Framework\Mail\Message + */ class MessageTest extends \PHPUnit\Framework\TestCase { /** - * @var \PHPUnit_Framework_MockObject_MockObject|\Magento\Framework\Mail\Message + * @var \Magento\Framework\Mail\Message */ - protected $_messageMock; + protected $message; protected function setUp() { - $this->_messageMock = $this->createPartialMock( - \Magento\Framework\Mail\Message::class, - ['setBody', 'setMessageType'] - ); + $this->message = new \Magento\Framework\Mail\Message(); } public function testSetBodyHtml() { - $this->_messageMock->expects($this->once()) - ->method('setMessageType') - ->with('text/html'); + $this->message->setBodyHtml('body'); - $this->_messageMock->expects($this->once()) - ->method('setBody') - ->with('body'); - - $this->_messageMock->setBodyHtml('body'); + $part = $this->message->getBody()->getParts()[0]; + $this->assertEquals('text/html', $part->getType()); + $this->assertEquals('8bit', $part->getEncoding()); + $this->assertEquals('utf-8', $part->getCharset()); + $this->assertEquals('body', $part->getContent()); } public function testSetBodyText() { - $this->_messageMock->expects($this->once()) - ->method('setMessageType') - ->with('text/plain'); - - $this->_messageMock->expects($this->once()) - ->method('setBody') - ->with('body'); + $this->message->setBodyText('body'); - $this->_messageMock->setBodyText('body'); + $part = $this->message->getBody()->getParts()[0]; + $this->assertEquals('text/plain', $part->getType()); + $this->assertEquals('8bit', $part->getEncoding()); + $this->assertEquals('utf-8', $part->getCharset()); + $this->assertEquals('body', $part->getContent()); } }