Skip to content

Commit f176af4

Browse files
ENGCOM-6034: add encoding to TransportBuilder #24906
- Merge Pull Request #24906 from elvinristi/magento2:fix/issue-24902--email-headers-encoding - Merged commits: 1. 95878b7 2. 0b9013e 3. 78db864
2 parents ff2fa21 + 78db864 commit f176af4

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

dev/tests/integration/testsuite/Magento/Customer/Controller/AccountTest.php

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -769,9 +769,21 @@ public function testConfirmationEmailWithSpecialCharacters(): void
769769
$message = $this->transportBuilderMock->getSentMessage();
770770
$rawMessage = $message->getRawMessage();
771771

772-
$this->assertContains('To: John Smith <' . $email . '>', $rawMessage);
772+
/** @var \Zend\Mime\Part $messageBodyPart */
773+
$messageBodyParts = $message->getBody()->getParts();
774+
$messageBodyPart = reset($messageBodyParts);
775+
$messageEncoding = $messageBodyPart->getCharset();
776+
$name = 'John Smith';
777+
778+
if (strtoupper($messageEncoding) !== 'ASCII') {
779+
$name = \Zend\Mail\Header\HeaderWrap::mimeEncodeValue($name, $messageEncoding);
780+
}
781+
782+
$nameEmail = sprintf('%s <%s>', $name, $email);
783+
784+
$this->assertContains('To: ' . $nameEmail, $rawMessage);
773785

774-
$content = $message->getBody()->getParts()[0]->getRawContent();
786+
$content = $messageBodyPart->getRawContent();
775787
$confirmationUrl = $this->getConfirmationUrlFromMessageContent($content);
776788
$this->setRequestInfo($confirmationUrl, 'confirm');
777789
$this->clearCookieMessagesList();

lib/internal/Magento/Framework/Mail/Template/TransportBuilder.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,7 @@ protected function prepareMessage()
377377
{
378378
$template = $this->getTemplate();
379379
$content = $template->processTemplate();
380+
380381
switch ($template->getType()) {
381382
case TemplateTypesInterface::TYPE_TEXT:
382383
$part['type'] = MimeInterface::TYPE_TEXT;
@@ -391,7 +392,10 @@ protected function prepareMessage()
391392
new Phrase('Unknown template type')
392393
);
393394
}
395+
396+
/** @var \Magento\Framework\Mail\MimePartInterface $mimePart */
394397
$mimePart = $this->mimePartInterfaceFactory->create(['content' => $content]);
398+
$this->messageData['encoding'] = $mimePart->getCharset();
395399
$this->messageData['body'] = $this->mimeMessageInterfaceFactory->create(
396400
['parts' => [$mimePart]]
397401
);
@@ -400,6 +404,7 @@ protected function prepareMessage()
400404
(string)$template->getSubject(),
401405
ENT_QUOTES
402406
);
407+
403408
$this->message = $this->emailMessageInterfaceFactory->create($this->messageData);
404409

405410
return $this;

0 commit comments

Comments
 (0)