Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 58439e3

Browse files
committed
bug #33216 [Mime] Trim and remove line breaks from NamedAddress name arg (maldoinc)
This PR was squashed before being merged into the 4.3 branch (closes #33216). Discussion ---------- [Mime] Trim and remove line breaks from NamedAddress name arg | Q | A | ------------- | --- | Branch? | 4.3 | Bug fix? | YES | New feature? | NO | BC breaks? | NO <!-- see https://symfony.com/bc --> | Deprecations? | NO <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tests pass? | YES <!-- please add some, will be required by reviewers --> | Fixed tickets | N/A <!-- #-prefixed issue number(s), if any --> | License | MIT | Doc PR | N/A This patch trims the name argument of named address in order to avoid some cases where the name is a non-empty input consisting of whitespace and line breaks which would lead to forming of addresses such as `" " <[email protected]>` <sup>1</sup> --- In a large Symfony codebase that deals with sending large volumes of email we encountered an issue after the Mailer was changed from PHPMailer to the Symfony Mailer component. The issue: Some emails would not render correctly as either plaintext or html but instead the original email source with headers and quoted-printable content would render in clients such as MS Outlook 2003, later versions of Outlook and other clients do not seem affected. After some investigation we found that the error came from a line that looked like this: `$message->addTo(new NamedAddress($contact->getEmailCanonical(), $contact->getFullName()))`. The `getFullName` method simply concated the first/last name with a space in between. For contacts without either, this resulted in representation 1. This causes MS Outlook 2003 (potentially Outlook 2000 as well but this was not tested) to malfunction and completely fail to render the email. This patch aims to fix the aforementioned issue. Commits ------- e491e3a [Mime] Trim and remove line breaks from NamedAddress name arg
2 parents 7a0787c + e491e3a commit 58439e3

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

src/Symfony/Component/Mime/Address.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ public function __construct(string $address)
4040
self::$validator = new EmailValidator();
4141
}
4242

43-
if (!self::$validator->isValid($address, new RFCValidation())) {
43+
$this->address = trim($address);
44+
45+
if (!self::$validator->isValid($this->address, new RFCValidation())) {
4446
throw new RfcComplianceException(sprintf('Email "%s" does not comply with addr-spec of RFC 2822.', $address));
4547
}
46-
47-
$this->address = $address;
4848
}
4949

5050
public function getAddress(): string

src/Symfony/Component/Mime/NamedAddress.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function __construct(string $address, string $name)
2424
{
2525
parent::__construct($address);
2626

27-
$this->name = $name;
27+
$this->name = trim(str_replace(["\n", "\r"], '', $name));
2828
}
2929

3030
public function getName(): string

src/Symfony/Component/Mime/Tests/NamedAddressTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,19 @@ public function testConstructor()
2424
$this->assertEquals('Fabien <[email protected]>', $a->toString());
2525
$this->assertEquals('[email protected]', $a->getEncodedAddress());
2626
}
27+
28+
public function nameEmptyDataProvider(): array
29+
{
30+
return [[''], [' '], [" \r\n "]];
31+
}
32+
33+
/**
34+
* @dataProvider nameEmptyDataProvider
35+
*/
36+
public function testNameEmpty(string $name)
37+
{
38+
$mail = '[email protected]';
39+
40+
$this->assertSame($mail, (new NamedAddress($mail, $name))->getEncodedNamedAddress());
41+
}
2742
}

0 commit comments

Comments
 (0)