From 8266ba8c8e19e4d59effc2529cac028e80beb6cb Mon Sep 17 00:00:00 2001 From: Christian Flothmann Date: Tue, 19 Jul 2022 11:22:29 +0200 Subject: [PATCH] quote address names if they contain parentheses --- src/Symfony/Component/Mime/Header/AbstractHeader.php | 5 +++++ .../Component/Mime/Tests/Header/MailboxListHeaderTest.php | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/src/Symfony/Component/Mime/Header/AbstractHeader.php b/src/Symfony/Component/Mime/Header/AbstractHeader.php index b4acbae0a573d..5de9066873edc 100644 --- a/src/Symfony/Component/Mime/Header/AbstractHeader.php +++ b/src/Symfony/Component/Mime/Header/AbstractHeader.php @@ -109,6 +109,11 @@ protected function createPhrase(HeaderInterface $header, string $string, string } $phraseStr = $this->encodeWords($header, $string, $usedLength); } + } elseif (str_contains($phraseStr, '(')) { + foreach (['\\', '"'] as $char) { + $phraseStr = str_replace($char, '\\'.$char, $phraseStr); + } + $phraseStr = '"'.$phraseStr.'"'; } return $phraseStr; diff --git a/src/Symfony/Component/Mime/Tests/Header/MailboxListHeaderTest.php b/src/Symfony/Component/Mime/Tests/Header/MailboxListHeaderTest.php index 1c047cd2b1840..7adc77bf7de69 100644 --- a/src/Symfony/Component/Mime/Tests/Header/MailboxListHeaderTest.php +++ b/src/Symfony/Component/Mime/Tests/Header/MailboxListHeaderTest.php @@ -50,6 +50,12 @@ public function testEscapeCharsInNameAreQuoted() $this->assertEquals(['"Chris Corbyn, \\\\escaped\\\\" '], $header->getAddressStrings()); } + public function testParenthesesInNameAreQuoted() + { + $header = new MailboxListHeader('From', [new Address('j.doe@example.com', 'J Doe (ACME)')]); + $this->assertEquals(['"J Doe (ACME)" '], $header->getAddressStrings()); + } + public function testUtf8CharsInDomainAreIdnEncoded() { $header = new MailboxListHeader('From', [new Address('chris@swïftmailer.org', 'Chris Corbyn')]);