diff --git a/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php b/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php index 2f1a1fb049e7f..1af04720d141f 100644 --- a/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php +++ b/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php @@ -13,6 +13,7 @@ use League\HTMLToMarkdown\HtmlConverter; use Symfony\Component\Mime\BodyRendererInterface; +use Symfony\Component\Mime\Exception\InvalidArgumentException; use Symfony\Component\Mime\Message; use Twig\Environment; @@ -44,7 +45,12 @@ public function render(Message $message): void return; } - $vars = array_merge($this->context, $message->getContext(), [ + $messageContext = $message->getContext(); + if (isset($messageContext['email'])) { + throw new InvalidArgumentException(sprintf('A "%s" context cannot have an "email" entry as this is a reserved variable.', TemplatedEmail::class)); + } + + $vars = array_merge($this->context, $messageContext, [ 'email' => new WrappedTemplatedEmail($this->twig, $message), ]); diff --git a/src/Symfony/Bridge/Twig/Tests/Mime/RendererTest.php b/src/Symfony/Bridge/Twig/Tests/Mime/BodyRendererTest.php similarity index 80% rename from src/Symfony/Bridge/Twig/Tests/Mime/RendererTest.php rename to src/Symfony/Bridge/Twig/Tests/Mime/BodyRendererTest.php index 3c40e6d7ee049..6eeade3a737af 100644 --- a/src/Symfony/Bridge/Twig/Tests/Mime/RendererTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Mime/BodyRendererTest.php @@ -14,11 +14,12 @@ use PHPUnit\Framework\TestCase; use Symfony\Bridge\Twig\Mime\BodyRenderer; use Symfony\Bridge\Twig\Mime\TemplatedEmail; +use Symfony\Component\Mime\Exception\InvalidArgumentException; use Symfony\Component\Mime\Part\Multipart\AlternativePart; use Twig\Environment; use Twig\Loader\ArrayLoader; -class RendererTest extends TestCase +class BodyRendererTest extends TestCase { public function testRenderTextOnly(): void { @@ -54,7 +55,13 @@ public function testRenderTextAndHtml(): void $this->assertEquals('HTML', $body->getParts()[1]->bodyToString()); } - private function prepareEmail(?string $text, ?string $html): TemplatedEmail + public function testRenderWithContextReservedEmailEntry(): void + { + $this->expectException(InvalidArgumentException::class); + $this->prepareEmail('Text', '', ['email' => 'reserved!']); + } + + private function prepareEmail(?string $text, ?string $html, array $context = []): TemplatedEmail { $twig = new Environment(new ArrayLoader([ 'text' => $text, @@ -63,7 +70,11 @@ private function prepareEmail(?string $text, ?string $html): TemplatedEmail 'image.jpg' => 'Some image data', ])); $renderer = new BodyRenderer($twig); - $email = (new TemplatedEmail())->to('fabien@symfony.com')->from('helene@symfony.com'); + $email = (new TemplatedEmail()) + ->to('fabien@symfony.com') + ->from('helene@symfony.com') + ->context($context) + ; if (null !== $text) { $email->textTemplate('text'); } pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy