Message.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\Mail;
  7. use Zend\Mime\Mime;
  8. use Zend\Mime\Part;
  9. /**
  10. * Class Message for email transportation
  11. */
  12. class Message implements MailMessageInterface
  13. {
  14. /**
  15. * @var \Zend\Mail\Message
  16. */
  17. private $zendMessage;
  18. /**
  19. * Message type
  20. *
  21. * @var string
  22. */
  23. private $messageType = self::TYPE_TEXT;
  24. /**
  25. * Initialize dependencies.
  26. *
  27. * @param string $charset
  28. */
  29. public function __construct($charset = 'utf-8')
  30. {
  31. $this->zendMessage = new \Zend\Mail\Message();
  32. $this->zendMessage->setEncoding($charset);
  33. }
  34. /**
  35. * @inheritdoc
  36. *
  37. * @deprecated 102.0.0
  38. * @see \Magento\Framework\Mail\Message::setBodyText
  39. * @see \Magento\Framework\Mail\Message::setBodyHtml
  40. */
  41. public function setMessageType($type)
  42. {
  43. $this->messageType = $type;
  44. return $this;
  45. }
  46. /**
  47. * @inheritdoc
  48. *
  49. * @deprecated 102.0.0
  50. * @see \Magento\Framework\Mail\Message::setBodyText
  51. * @see \Magento\Framework\Mail\Message::setBodyHtml
  52. */
  53. public function setBody($body)
  54. {
  55. if (is_string($body) && $this->messageType === MailMessageInterface::TYPE_HTML) {
  56. $body = self::createHtmlMimeFromString($body);
  57. }
  58. $this->zendMessage->setBody($body);
  59. return $this;
  60. }
  61. /**
  62. * @inheritdoc
  63. */
  64. public function setSubject($subject)
  65. {
  66. $this->zendMessage->setSubject($subject);
  67. return $this;
  68. }
  69. /**
  70. * @inheritdoc
  71. */
  72. public function getSubject()
  73. {
  74. return $this->zendMessage->getSubject();
  75. }
  76. /**
  77. * @inheritdoc
  78. */
  79. public function getBody()
  80. {
  81. return $this->zendMessage->getBody();
  82. }
  83. /**
  84. * @inheritdoc
  85. *
  86. * @deprecated 102.0.1 This function is missing the from name. The
  87. * setFromAddress() function sets both from address and from name.
  88. * @see setFromAddress()
  89. */
  90. public function setFrom($fromAddress)
  91. {
  92. $this->setFromAddress($fromAddress, null);
  93. return $this;
  94. }
  95. /**
  96. * @inheritdoc
  97. */
  98. public function setFromAddress($fromAddress, $fromName = null)
  99. {
  100. $this->zendMessage->setFrom($fromAddress, $fromName);
  101. return $this;
  102. }
  103. /**
  104. * @inheritdoc
  105. */
  106. public function addTo($toAddress)
  107. {
  108. $this->zendMessage->addTo($toAddress);
  109. return $this;
  110. }
  111. /**
  112. * @inheritdoc
  113. */
  114. public function addCc($ccAddress)
  115. {
  116. $this->zendMessage->addCc($ccAddress);
  117. return $this;
  118. }
  119. /**
  120. * @inheritdoc
  121. */
  122. public function addBcc($bccAddress)
  123. {
  124. $this->zendMessage->addBcc($bccAddress);
  125. return $this;
  126. }
  127. /**
  128. * @inheritdoc
  129. */
  130. public function setReplyTo($replyToAddress)
  131. {
  132. $this->zendMessage->setReplyTo($replyToAddress);
  133. return $this;
  134. }
  135. /**
  136. * @inheritdoc
  137. */
  138. public function getRawMessage()
  139. {
  140. return $this->zendMessage->toString();
  141. }
  142. /**
  143. * Create HTML mime message from the string.
  144. *
  145. * @param string $htmlBody
  146. * @return \Zend\Mime\Message
  147. */
  148. private function createHtmlMimeFromString($htmlBody)
  149. {
  150. $htmlPart = new Part($htmlBody);
  151. $htmlPart->setCharset($this->zendMessage->getEncoding());
  152. $htmlPart->setType(Mime::TYPE_HTML);
  153. $mimeMessage = new \Zend\Mime\Message();
  154. $mimeMessage->addPart($htmlPart);
  155. return $mimeMessage;
  156. }
  157. /**
  158. * @inheritdoc
  159. */
  160. public function setBodyHtml($html)
  161. {
  162. $this->setMessageType(self::TYPE_HTML);
  163. return $this->setBody($html);
  164. }
  165. /**
  166. * @inheritdoc
  167. */
  168. public function setBodyText($text)
  169. {
  170. $this->setMessageType(self::TYPE_TEXT);
  171. return $this->setBody($text);
  172. }
  173. }