From 9e6baee9f36e314e3998a6d4346b5eedb6c7897e Mon Sep 17 00:00:00 2001 From: Andrea Ruggiero Date: Mon, 4 Jan 2021 21:57:14 +0100 Subject: [PATCH] Remove full head content in HTML to text converter When extracting text from HTML part all the content between opening and closing tag should be removed --- src/Symfony/Bridge/Twig/Mime/BodyRenderer.php | 2 +- .../Bridge/Twig/Tests/Mime/BodyRendererTest.php | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php b/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php index e082d8313b..5e75a69bb3 100644 --- a/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php +++ b/src/Symfony/Bridge/Twig/Mime/BodyRenderer.php @@ -74,6 +74,6 @@ final class BodyRenderer implements BodyRendererInterface return $this->converter->convert($html); } - return strip_tags(preg_replace('{<(head|style)\b.*?}i', '', $html)); + return strip_tags(preg_replace('{<(head|style)\b.*?}is', '', $html)); } } diff --git a/src/Symfony/Bridge/Twig/Tests/Mime/BodyRendererTest.php b/src/Symfony/Bridge/Twig/Tests/Mime/BodyRendererTest.php index 5d3d1d3ff2..316d41c159 100644 --- a/src/Symfony/Bridge/Twig/Tests/Mime/BodyRendererTest.php +++ b/src/Symfony/Bridge/Twig/Tests/Mime/BodyRendererTest.php @@ -37,6 +37,23 @@ class BodyRendererTest extends TestCase $this->assertEquals(str_replace('=', '=3D', $html), $body->getParts()[1]->bodyToString()); } + public function testRenderMultiLineHtmlOnly() + { + $html = << + + +HTML +HTML; + $email = $this->prepareEmail(null, $html); + $body = $email->getBody(); + $this->assertInstanceOf(AlternativePart::class, $body); + $this->assertEquals('HTML', str_replace(["\r", "\n"], '', $body->getParts()[0]->bodyToString())); + $this->assertEquals(str_replace(['=', "\n"], ['=3D', "\r\n"], $html), $body->getParts()[1]->bodyToString()); + } + public function testRenderHtmlOnlyWithTextSet() { $email = $this->prepareEmail(null, 'HTML');