Skip to content

Commit fa030f2

Browse files
author
Graham Wharton
committed
Update Framework/Mail::Message to send all emails as MIME, not just
HTML emails.
1 parent f94b4a8 commit fa030f2

File tree

1 file changed

+26
-5
lines changed

1 file changed

+26
-5
lines changed

lib/internal/Magento/Framework/Mail/Message.php

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class Message implements MailMessageInterface
2323
*
2424
* @var string
2525
*/
26-
private $messageType = self::TYPE_TEXT;
26+
private $messageType = Mime::TYPE_TEXT;
2727

2828
/**
2929
* Initialize dependencies.
@@ -58,8 +58,8 @@ public function setMessageType($type)
5858
*/
5959
public function setBody($body)
6060
{
61-
if (is_string($body) && $this->messageType === MailMessageInterface::TYPE_HTML) {
62-
$body = self::createHtmlMimeFromString($body);
61+
if (is_string($body)) {
62+
$body = self::createMimeFromString($body, $this->messageType);
6363
}
6464
$this->zendMessage->setBody($body);
6565
return $this;
@@ -161,6 +161,10 @@ public function getRawMessage()
161161
*
162162
* @param string $htmlBody
163163
* @return \Zend\Mime\Message
164+
*
165+
* @deprecated All emails that Magento sends should be mime encoded. Therefore
166+
* use generic function createMimeFromString
167+
* @see createMimeFromString()
164168
*/
165169
private function createHtmlMimeFromString($htmlBody)
166170
{
@@ -172,12 +176,29 @@ private function createHtmlMimeFromString($htmlBody)
172176
return $mimeMessage;
173177
}
174178

179+
/**
180+
* Create mime message from the string.
181+
*
182+
* @param string $body
183+
* @param string $messageType
184+
* @return \Zend\Mime\Message
185+
*/
186+
private function createMimeFromString($body, $messageType)
187+
{
188+
$part = new Part($body);
189+
$part->setCharset($this->zendMessage->getEncoding());
190+
$part->setType($messageType);
191+
$mimeMessage = new \Zend\Mime\Message();
192+
$mimeMessage->addPart($part);
193+
return $mimeMessage;
194+
}
195+
175196
/**
176197
* @inheritdoc
177198
*/
178199
public function setBodyHtml($html)
179200
{
180-
$this->setMessageType(self::TYPE_HTML);
201+
$this->setMessageType(Mime::TYPE_HTML);
181202
return $this->setBody($html);
182203
}
183204

@@ -186,7 +207,7 @@ public function setBodyHtml($html)
186207
*/
187208
public function setBodyText($text)
188209
{
189-
$this->setMessageType(self::TYPE_TEXT);
210+
$this->setMessageType(Mime::TYPE_TEXT);
190211
return $this->setBody($text);
191212
}
192213
}

0 commit comments

Comments
 (0)