diff --git a/lib/internal/Magento/Framework/Mail/Message.php b/lib/internal/Magento/Framework/Mail/Message.php index 96566ad82b8eb..1156a047ba370 100644 --- a/lib/internal/Magento/Framework/Mail/Message.php +++ b/lib/internal/Magento/Framework/Mail/Message.php @@ -20,7 +20,7 @@ class Message implements MailMessageInterface * * @var string */ - private $messageType = self::TYPE_TEXT; + private $messageType = Mime::TYPE_TEXT; /** * Initialize dependencies. @@ -55,8 +55,8 @@ public function setMessageType($type) */ public function setBody($body) { - if (is_string($body) && $this->messageType === MailMessageInterface::TYPE_HTML) { - $body = $this->createHtmlMimeFromString($body); + if (is_string($body)) { + $body = $this->createMimeFromString($body, $this->messageType); } $this->zendMessage->setBody($body); return $this; @@ -158,7 +158,7 @@ public function getRawMessage() */ public function setBodyHtml($html) { - $this->setMessageType(self::TYPE_HTML); + $this->setMessageType(Mime::TYPE_HTML); return $this->setBody($html); } @@ -167,23 +167,24 @@ public function setBodyHtml($html) */ public function setBodyText($text) { - $this->setMessageType(self::TYPE_TEXT); + $this->setMessageType(Mime::TYPE_TEXT); return $this->setBody($text); } /** - * 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; } } 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()); } }