|
| 1 | +diff --git a/vendor/magento/module-email/Model/Transport.php b/vendor/magento/module-email/Model/Transport.php |
| 2 | +index cbce1682cb5..79ceb56a883 100644 |
| 3 | +--- a/vendor/magento/module-email/Model/Transport.php |
| 4 | ++++ b/vendor/magento/module-email/Model/Transport.php |
| 5 | +@@ -9,7 +9,6 @@ namespace Magento\Email\Model; |
| 6 | + |
| 7 | + use Magento\Framework\App\Config\ScopeConfigInterface; |
| 8 | + use Magento\Framework\Exception\MailException; |
| 9 | +-use Magento\Framework\Mail\EmailMessageInterface; |
| 10 | + use Magento\Framework\Mail\MessageInterface; |
| 11 | + use Magento\Framework\Mail\TransportInterface; |
| 12 | + use Magento\Framework\Phrase; |
| 13 | +@@ -62,12 +61,12 @@ class Transport implements TransportInterface |
| 14 | + private $message; |
| 15 | + |
| 16 | + /** |
| 17 | +- * @param EmailMessageInterface $message Email message object |
| 18 | ++ * @param MessageInterface $message Email message object |
| 19 | + * @param ScopeConfigInterface $scopeConfig Core store config |
| 20 | + * @param null|string|array|\Traversable $parameters Config options for sendmail parameters |
| 21 | + */ |
| 22 | + public function __construct( |
| 23 | +- EmailMessageInterface $message, |
| 24 | ++ MessageInterface $message, |
| 25 | + ScopeConfigInterface $scopeConfig, |
| 26 | + $parameters = null |
| 27 | + ) { |
| 28 | +diff --git a/dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest.php b/dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest.php |
| 29 | +index 32f12dada57..4210312c55a 100644 |
| 30 | +--- a/dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest.php |
| 31 | ++++ b/dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest.php |
| 32 | +@@ -769,7 +769,7 @@ class AccountTest extends \Magento\TestFramework\TestCase\AbstractController |
| 33 | + $message = $this->transportBuilderMock->getSentMessage(); |
| 34 | + $rawMessage = $message->getRawMessage(); |
| 35 | + |
| 36 | +- $this->assertContains('To: John Smith <' . $email . '>', $rawMessage); |
| 37 | ++ $this->assertContains('To: =?utf-8?Q?John=20Smith?= <' . $email . '>', $rawMessage); |
| 38 | + |
| 39 | + $content = $message->getBody()->getParts()[0]->getRawContent(); |
| 40 | + $confirmationUrl = $this->getConfirmationUrlFromMessageContent($content); |
| 41 | +diff --git a/dev/tests/integration/testsuite/Magento/Framework/Mail/EmailMessageTest.php b/dev/tests/integration/testsuite/Magento/Framework/Mail/EmailMessageTest.php |
| 42 | +index 10a54b4e1b8..186c3e2796c 100644 |
| 43 | +--- a/dev/tests/integration/testsuite/Magento/Framework/Mail/EmailMessageTest.php |
| 44 | ++++ b/dev/tests/integration/testsuite/Magento/Framework/Mail/EmailMessageTest.php |
| 45 | +@@ -14,6 +14,7 @@ use PHPUnit\Framework\TestCase; |
| 46 | + |
| 47 | + /** |
| 48 | + * Class EmailMessageTest |
| 49 | ++ * @SuppressWarnings(PHPMD.CouplingBetweenObjects) |
| 50 | + */ |
| 51 | + class EmailMessageTest extends TestCase |
| 52 | + { |
| 53 | +@@ -164,23 +165,42 @@ class EmailMessageTest extends TestCase |
| 54 | + 'cc' => $cc, |
| 55 | + 'replyTo' => $replyTo, |
| 56 | + 'bcc' => $bcc, |
| 57 | +- 'sender' => $sender |
| 58 | ++ 'sender' => $sender, |
| 59 | + ]; |
| 60 | + $message = $this->messageFactory->create($data); |
| 61 | + |
| 62 | + $this->assertContains($content, $message->toString()); |
| 63 | + $this->assertContains('Content-Type: ' . $type, $message->toString()); |
| 64 | +- $senderString = 'Sender: ' . $sender->getName() . ' <' . $sender->getEmail() . '>'; |
| 65 | ++ $senderString = 'Sender: =?utf-8?Q?' |
| 66 | ++ . str_replace(' ', '=20', $sender->getName()) |
| 67 | ++ . '?= <' |
| 68 | ++ . $sender->getEmail() |
| 69 | ++ . '>'; |
| 70 | + $this->assertContains($senderString, $message->toString()); |
| 71 | + $this->assertContains('From: ' . $from[0]->getEmail(), $message->toString()); |
| 72 | +- $replyToString = 'Reply-To: ' . $replyTo[0]->getName() . ' <' . $replyTo[0]->getEmail() . '>'; |
| 73 | ++ $replyToString = 'Reply-To: =?utf-8?Q?' |
| 74 | ++ . str_replace(' ', '=20', $replyTo[0]->getName()) |
| 75 | ++ . '?= <' |
| 76 | ++ . $replyTo[0]->getEmail() |
| 77 | ++ . '>'; |
| 78 | + $this->assertContains($replyToString, $message->toString()); |
| 79 | +- $toString = 'To: ' . $to[0]->getName() . ' <' . $to[0]->getEmail() . '>'; |
| 80 | ++ $toString = 'To: =?utf-8?Q?' |
| 81 | ++ . str_replace(' ', '=20', $to[0]->getName()) |
| 82 | ++ . '?= <' |
| 83 | ++ . $to[0]->getEmail() |
| 84 | ++ . '>'; |
| 85 | + $this->assertContains($toString, $message->toString()); |
| 86 | +- $ccString = 'Cc: ' . $cc[0]->getName() . ' <' . $cc[0]->getEmail() . '>'; |
| 87 | ++ $ccString = 'Cc: =?utf-8?Q?' |
| 88 | ++ . str_replace(' ', '=20', $cc[0]->getName()) |
| 89 | ++ . '?= <' |
| 90 | ++ . $cc[0]->getEmail() |
| 91 | ++ . '>'; |
| 92 | + $this->assertContains($ccString, $message->toString()); |
| 93 | + $this->assertContains('Bcc: ' . $bcc[0]->getEmail(), $message->toString()); |
| 94 | +- $this->assertContains('Content-Description: ' . $this->description, $message->toString()); |
| 95 | ++ $contentDescription = 'Content-Description: =?utf-8?Q?' |
| 96 | ++ . str_replace(' ', '=20', $this->description) |
| 97 | ++ . '?='; |
| 98 | ++ $this->assertContains($contentDescription, $message->toString()); |
| 99 | + $this->assertContains('Subject: ' . $this->subject, $message->toString()); |
| 100 | + $this->assertContains($content, $message->toString()); |
| 101 | + //tests address factory |
| 102 | +@@ -235,6 +255,7 @@ class EmailMessageTest extends TestCase |
| 103 | + 'body' => $mimeMessage, |
| 104 | + 'subject' => $this->subject, |
| 105 | + 'to' => [$addressTo], |
| 106 | ++ 'encoding' => '', |
| 107 | + ]; |
| 108 | + $message = $this->messageFactory->create($data); |
| 109 | + |
| 110 | +diff --git a/vendor/magento/framework/Mail/EmailMessage.php b/vendor/magento/framework/Mail/EmailMessage.php |
| 111 | +index aaef9750751..02c75977cd0 100644 |
| 112 | +--- a/vendor/magento/framework/Mail/EmailMessage.php |
| 113 | ++++ b/vendor/magento/framework/Mail/EmailMessage.php |
| 114 | +@@ -10,19 +10,13 @@ namespace Magento\Framework\Mail; |
| 115 | + use Magento\Framework\Mail\Exception\InvalidArgumentException; |
| 116 | + use Zend\Mail\Address as ZendAddress; |
| 117 | + use Zend\Mail\AddressList; |
| 118 | +-use Zend\Mail\Message as ZendMessage; |
| 119 | + use Zend\Mime\Message as ZendMimeMessage; |
| 120 | + |
| 121 | + /** |
| 122 | +- * Class EmailMessage |
| 123 | ++ * Email message |
| 124 | + */ |
| 125 | +-class EmailMessage implements EmailMessageInterface |
| 126 | ++class EmailMessage extends Message implements EmailMessageInterface |
| 127 | + { |
| 128 | +- /** |
| 129 | +- * @var ZendMessage |
| 130 | +- */ |
| 131 | +- private $message; |
| 132 | +- |
| 133 | + /** |
| 134 | + * @var MimeMessageInterfaceFactory |
| 135 | + */ |
| 136 | +@@ -64,38 +58,35 @@ class EmailMessage implements EmailMessageInterface |
| 137 | + ?array $replyTo = null, |
| 138 | + ?Address $sender = null, |
| 139 | + ?string $subject = '', |
| 140 | +- ?string $encoding = '' |
| 141 | ++ ?string $encoding = 'utf-8' |
| 142 | + ) { |
| 143 | +- $this->message = new ZendMessage(); |
| 144 | ++ parent::__construct($encoding); |
| 145 | + $mimeMessage = new ZendMimeMessage(); |
| 146 | + $mimeMessage->setParts($body->getParts()); |
| 147 | +- $this->message->setBody($mimeMessage); |
| 148 | +- if ($encoding) { |
| 149 | +- $this->message->setEncoding($encoding); |
| 150 | +- } |
| 151 | ++ $this->zendMessage->setBody($mimeMessage); |
| 152 | + if ($subject) { |
| 153 | +- $this->message->setSubject($subject); |
| 154 | ++ $this->zendMessage->setSubject($subject); |
| 155 | + } |
| 156 | + if ($sender) { |
| 157 | +- $this->message->setSender($sender->getEmail(), $sender->getName()); |
| 158 | ++ $this->zendMessage->setSender($sender->getEmail(), $sender->getName()); |
| 159 | + } |
| 160 | + if (count($to) < 1) { |
| 161 | + throw new InvalidArgumentException('Email message must have at list one addressee'); |
| 162 | + } |
| 163 | + if ($to) { |
| 164 | +- $this->message->setTo($this->convertAddressArrayToAddressList($to)); |
| 165 | ++ $this->zendMessage->setTo($this->convertAddressArrayToAddressList($to)); |
| 166 | + } |
| 167 | + if ($replyTo) { |
| 168 | +- $this->message->setReplyTo($this->convertAddressArrayToAddressList($replyTo)); |
| 169 | ++ $this->zendMessage->setReplyTo($this->convertAddressArrayToAddressList($replyTo)); |
| 170 | + } |
| 171 | + if ($from) { |
| 172 | +- $this->message->setFrom($this->convertAddressArrayToAddressList($from)); |
| 173 | ++ $this->zendMessage->setFrom($this->convertAddressArrayToAddressList($from)); |
| 174 | + } |
| 175 | + if ($cc) { |
| 176 | +- $this->message->setCc($this->convertAddressArrayToAddressList($cc)); |
| 177 | ++ $this->zendMessage->setCc($this->convertAddressArrayToAddressList($cc)); |
| 178 | + } |
| 179 | + if ($bcc) { |
| 180 | +- $this->message->setBcc($this->convertAddressArrayToAddressList($bcc)); |
| 181 | ++ $this->zendMessage->setBcc($this->convertAddressArrayToAddressList($bcc)); |
| 182 | + } |
| 183 | + $this->mimeMessageFactory = $mimeMessageFactory; |
| 184 | + $this->addressFactory = $addressFactory; |
| 185 | +@@ -106,7 +97,7 @@ class EmailMessage implements EmailMessageInterface |
| 186 | + */ |
| 187 | + public function getEncoding(): string |
| 188 | + { |
| 189 | +- return $this->message->getEncoding(); |
| 190 | ++ return $this->zendMessage->getEncoding(); |
| 191 | + } |
| 192 | + |
| 193 | + /** |
| 194 | +@@ -114,7 +105,7 @@ class EmailMessage implements EmailMessageInterface |
| 195 | + */ |
| 196 | + public function getHeaders(): array |
| 197 | + { |
| 198 | +- return $this->message->getHeaders()->toArray(); |
| 199 | ++ return $this->zendMessage->getHeaders()->toArray(); |
| 200 | + } |
| 201 | + |
| 202 | + /** |
| 203 | +@@ -122,7 +113,7 @@ class EmailMessage implements EmailMessageInterface |
| 204 | + */ |
| 205 | + public function getFrom(): ?array |
| 206 | + { |
| 207 | +- return $this->convertAddressListToAddressArray($this->message->getFrom()); |
| 208 | ++ return $this->convertAddressListToAddressArray($this->zendMessage->getFrom()); |
| 209 | + } |
| 210 | + |
| 211 | + /** |
| 212 | +@@ -130,7 +121,7 @@ class EmailMessage implements EmailMessageInterface |
| 213 | + */ |
| 214 | + public function getTo(): array |
| 215 | + { |
| 216 | +- return $this->convertAddressListToAddressArray($this->message->getTo()); |
| 217 | ++ return $this->convertAddressListToAddressArray($this->zendMessage->getTo()); |
| 218 | + } |
| 219 | + |
| 220 | + /** |
| 221 | +@@ -138,7 +129,7 @@ class EmailMessage implements EmailMessageInterface |
| 222 | + */ |
| 223 | + public function getCc(): ?array |
| 224 | + { |
| 225 | +- return $this->convertAddressListToAddressArray($this->message->getCc()); |
| 226 | ++ return $this->convertAddressListToAddressArray($this->zendMessage->getCc()); |
| 227 | + } |
| 228 | + |
| 229 | + /** |
| 230 | +@@ -146,7 +137,7 @@ class EmailMessage implements EmailMessageInterface |
| 231 | + */ |
| 232 | + public function getBcc(): ?array |
| 233 | + { |
| 234 | +- return $this->convertAddressListToAddressArray($this->message->getBcc()); |
| 235 | ++ return $this->convertAddressListToAddressArray($this->zendMessage->getBcc()); |
| 236 | + } |
| 237 | + |
| 238 | + /** |
| 239 | +@@ -154,7 +145,7 @@ class EmailMessage implements EmailMessageInterface |
| 240 | + */ |
| 241 | + public function getReplyTo(): ?array |
| 242 | + { |
| 243 | +- return $this->convertAddressListToAddressArray($this->message->getReplyTo()); |
| 244 | ++ return $this->convertAddressListToAddressArray($this->zendMessage->getReplyTo()); |
| 245 | + } |
| 246 | + |
| 247 | + /** |
| 248 | +@@ -163,7 +154,7 @@ class EmailMessage implements EmailMessageInterface |
| 249 | + public function getSender(): ?Address |
| 250 | + { |
| 251 | + /** @var ZendAddress $zendSender */ |
| 252 | +- if (!$zendSender = $this->message->getSender()) { |
| 253 | ++ if (!$zendSender = $this->zendMessage->getSender()) { |
| 254 | + return null; |
| 255 | + } |
| 256 | + |
| 257 | +@@ -178,18 +169,10 @@ class EmailMessage implements EmailMessageInterface |
| 258 | + /** |
| 259 | + * @inheritDoc |
| 260 | + */ |
| 261 | +- public function getSubject(): ?string |
| 262 | +- { |
| 263 | +- return $this->message->getSubject(); |
| 264 | +- } |
| 265 | +- |
| 266 | +- /** |
| 267 | +- * @inheritDoc |
| 268 | +- */ |
| 269 | +- public function getBody(): MimeMessageInterface |
| 270 | ++ public function getMessageBody(): MimeMessageInterface |
| 271 | + { |
| 272 | + return $this->mimeMessageFactory->create( |
| 273 | +- ['parts' => $this->message->getBody()->getParts()] |
| 274 | ++ ['parts' => $this->zendMessage->getBody()->getParts()] |
| 275 | + ); |
| 276 | + } |
| 277 | + |
| 278 | +@@ -198,15 +181,7 @@ class EmailMessage implements EmailMessageInterface |
| 279 | + */ |
| 280 | + public function getBodyText(): string |
| 281 | + { |
| 282 | +- return $this->message->getBodyText(); |
| 283 | +- } |
| 284 | +- |
| 285 | +- /** |
| 286 | +- * @inheritdoc |
| 287 | +- */ |
| 288 | +- public function getRawMessage(): string |
| 289 | +- { |
| 290 | +- return $this->toString(); |
| 291 | ++ return $this->zendMessage->getBodyText(); |
| 292 | + } |
| 293 | + |
| 294 | + /** |
| 295 | +@@ -214,7 +189,7 @@ class EmailMessage implements EmailMessageInterface |
| 296 | + */ |
| 297 | + public function toString(): string |
| 298 | + { |
| 299 | +- return $this->message->toString(); |
| 300 | ++ return $this->zendMessage->toString(); |
| 301 | + } |
| 302 | + |
| 303 | + /** |
| 304 | +diff --git a/vendor/magento/framework/Mail/EmailMessageInterface.php b/vendor/magento/framework/Mail/EmailMessageInterface.php |
| 305 | +index 95f83ff679c..93eaa4acde3 100644 |
| 306 | +--- a/vendor/magento/framework/Mail/EmailMessageInterface.php |
| 307 | ++++ b/vendor/magento/framework/Mail/EmailMessageInterface.php |
| 308 | +@@ -9,7 +9,7 @@ namespace Magento\Framework\Mail; |
| 309 | + /** |
| 310 | + * Interface EmailMessageInterface |
| 311 | + */ |
| 312 | +-interface EmailMessageInterface |
| 313 | ++interface EmailMessageInterface extends MailMessageInterface |
| 314 | + { |
| 315 | + /** |
| 316 | + * Get the message encoding |
| 317 | +@@ -72,14 +72,14 @@ interface EmailMessageInterface |
| 318 | + * |
| 319 | + * @return null|string |
| 320 | + */ |
| 321 | +- public function getSubject(): ?string; |
| 322 | ++ public function getSubject(); |
| 323 | + |
| 324 | + /** |
| 325 | + * Return the currently set message body |
| 326 | + * |
| 327 | + * @return MimeMessageInterface |
| 328 | + */ |
| 329 | +- public function getBody(): MimeMessageInterface; |
| 330 | ++ public function getMessageBody(): MimeMessageInterface; |
| 331 | + |
| 332 | + /** |
| 333 | + * Get the string-serialized message body text |
| 334 | +diff --git a/vendor/magento/framework/Mail/MailMessageInterface.php b/vendor/magento/framework/Mail/MailMessageInterface.php |
| 335 | +index da010be2702..5179e6057c4 100644 |
| 336 | +--- a/vendor/magento/framework/Mail/MailMessageInterface.php |
| 337 | ++++ b/vendor/magento/framework/Mail/MailMessageInterface.php |
| 338 | +@@ -10,6 +10,8 @@ namespace Magento\Framework\Mail; |
| 339 | + * |
| 340 | + * @api |
| 341 | + * @since 101.0.8 |
| 342 | ++ * @deprecated |
| 343 | ++ * @see \Magento\Framework\Mail\EmailMessageInterface |
| 344 | + */ |
| 345 | + interface MailMessageInterface extends MessageInterface |
| 346 | + { |
| 347 | +diff --git a/vendor/magento/framework/Mail/Message.php b/vendor/magento/framework/Mail/Message.php |
| 348 | +index b15b75ca9ac..1f423e80108 100644 |
| 349 | +--- a/vendor/magento/framework/Mail/Message.php |
| 350 | ++++ b/vendor/magento/framework/Mail/Message.php |
| 351 | +@@ -10,13 +10,16 @@ use Zend\Mime\Part; |
| 352 | + |
| 353 | + /** |
| 354 | + * Class Message for email transportation |
| 355 | ++ * |
| 356 | ++ * @deprecated |
| 357 | ++ * @see \Magento\Framework\Mail\EmailMessage |
| 358 | + */ |
| 359 | + class Message implements MailMessageInterface |
| 360 | + { |
| 361 | + /** |
| 362 | + * @var \Zend\Mail\Message |
| 363 | + */ |
| 364 | +- private $zendMessage; |
| 365 | ++ protected $zendMessage; |
| 366 | + |
| 367 | + /** |
| 368 | + * Message type |
| 369 | +diff --git a/vendor/magento/framework/Mail/Template/TransportBuilder.php b/vendor/magento/framework/Mail/Template/TransportBuilder.php |
| 370 | +index 4a8d6572faa..2d28e2f560a 100644 |
| 371 | +--- a/vendor/magento/framework/Mail/Template/TransportBuilder.php |
| 372 | ++++ b/vendor/magento/framework/Mail/Template/TransportBuilder.php |
| 373 | +@@ -87,7 +87,7 @@ class TransportBuilder |
| 374 | + /** |
| 375 | + * Message |
| 376 | + * |
| 377 | +- * @var EmailMessageInterface |
| 378 | ++ * @var MessageInterface |
| 379 | + */ |
| 380 | + protected $message; |
| 381 | + |
0 commit comments