Skip to content

Commit

Permalink
Update Framework/Mail::Message to send all emails as MIME, not just
Browse files Browse the repository at this point in the history
HTML emails.
  • Loading branch information
Graham Wharton committed Jul 2, 2019
1 parent 5f446e3 commit dfdbe7c
Showing 1 changed file with 26 additions and 5 deletions.
31 changes: 26 additions & 5 deletions lib/internal/Magento/Framework/Mail/Message.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class Message implements MailMessageInterface
*
* @var string
*/
private $messageType = self::TYPE_TEXT;
private $messageType = Mime::TYPE_TEXT;

/**
* Initialize dependencies.
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}

Expand All @@ -167,7 +167,7 @@ public function setBodyHtml($html)
*/
public function setBodyText($text)
{
$this->setMessageType(self::TYPE_TEXT);
$this->setMessageType(Mime::TYPE_TEXT);
return $this->setBody($text);
}

Expand All @@ -176,6 +176,10 @@ public function setBodyText($text)
*
* @param string $htmlBody
* @return \Zend\Mime\Message
*
* @deprecated All emails that Magento sends should be mime encoded. Therefore
* use generic function createMimeFromString
* @see createMimeFromString()
*/
private function createHtmlMimeFromString($htmlBody)
{
Expand All @@ -186,4 +190,21 @@ private function createHtmlMimeFromString($htmlBody)
$mimeMessage->addPart($htmlPart);
return $mimeMessage;
}

/**
* Create mime message from the string.
*
* @param string $body
* @param string $messageType
* @return \Zend\Mime\Message
*/
private function createMimeFromString($body, $messageType)
{
$part = new Part($body);
$part->setCharset($this->zendMessage->getEncoding());
$part->setType($messageType);
$mimeMessage = new \Zend\Mime\Message();
$mimeMessage->addPart($part);
return $mimeMessage;
}
}

0 comments on commit dfdbe7c

Please sign in to comment.