[Mime] Escape commas in address names
This commit is contained in:
parent
d23b74ebce
commit
39e9158999
|
@ -62,8 +62,8 @@ class SesApiTransportTest extends TestCase
|
||||||
parse_str($options['body'], $content);
|
parse_str($options['body'], $content);
|
||||||
|
|
||||||
$this->assertSame('Hello!', $content['Message_Subject_Data']);
|
$this->assertSame('Hello!', $content['Message_Subject_Data']);
|
||||||
$this->assertSame('Saif Eddin <saif.gmati@symfony.com>', $content['Destination_ToAddresses_member'][0]);
|
$this->assertSame('"Saif Eddin" <saif.gmati@symfony.com>', $content['Destination_ToAddresses_member'][0]);
|
||||||
$this->assertSame('Fabien <fabpot@symfony.com>', $content['Source']);
|
$this->assertSame('"Fabien" <fabpot@symfony.com>', $content['Source']);
|
||||||
$this->assertSame('Hello There!', $content['Message_Body_Text_Data']);
|
$this->assertSame('Hello There!', $content['Message_Body_Text_Data']);
|
||||||
|
|
||||||
$xml = '<SendEmailResponse xmlns="https://email.amazonaws.com/doc/2010-03-31/">
|
$xml = '<SendEmailResponse xmlns="https://email.amazonaws.com/doc/2010-03-31/">
|
||||||
|
|
|
@ -82,8 +82,8 @@ class MailgunApiTransportTest extends TestCase
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->assertStringContainsString('Hello!', $content);
|
$this->assertStringContainsString('Hello!', $content);
|
||||||
$this->assertStringContainsString('Saif Eddin <saif.gmati@symfony.com>', $content);
|
$this->assertStringContainsString('"Saif Eddin" <saif.gmati@symfony.com>', $content);
|
||||||
$this->assertStringContainsString('Fabien <fabpot@symfony.com>', $content);
|
$this->assertStringContainsString('"Fabien" <fabpot@symfony.com>', $content);
|
||||||
$this->assertStringContainsString('Hello There!', $content);
|
$this->assertStringContainsString('Hello There!', $content);
|
||||||
|
|
||||||
return new MockResponse(json_encode(['id' => 'foobar']), [
|
return new MockResponse(json_encode(['id' => 'foobar']), [
|
||||||
|
|
|
@ -74,8 +74,8 @@ class PostmarkApiTransportTest extends TestCase
|
||||||
$this->assertStringContainsStringIgnoringCase('X-Postmark-Server-Token: KEY', $options['headers'][1] ?? $options['request_headers'][1]);
|
$this->assertStringContainsStringIgnoringCase('X-Postmark-Server-Token: KEY', $options['headers'][1] ?? $options['request_headers'][1]);
|
||||||
|
|
||||||
$body = json_decode($options['body'], true);
|
$body = json_decode($options['body'], true);
|
||||||
$this->assertSame('Fabien <fabpot@symfony.com>', $body['From']);
|
$this->assertSame('"Fabien" <fabpot@symfony.com>', $body['From']);
|
||||||
$this->assertSame('Saif Eddin <saif.gmati@symfony.com>', $body['To']);
|
$this->assertSame('"Saif Eddin" <saif.gmati@symfony.com>', $body['To']);
|
||||||
$this->assertSame('Hello!', $body['Subject']);
|
$this->assertSame('Hello!', $body['Subject']);
|
||||||
$this->assertSame('Hello There!', $body['TextBody']);
|
$this->assertSame('Hello There!', $body['TextBody']);
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,16 @@ final class Address
|
||||||
|
|
||||||
public function toString(): string
|
public function toString(): string
|
||||||
{
|
{
|
||||||
return ($n = $this->getName()) ? $n.' <'.$this->getEncodedAddress().'>' : $this->getEncodedAddress();
|
return ($n = $this->getEncodedName()) ? $n.' <'.$this->getEncodedAddress().'>' : $this->getEncodedAddress();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getEncodedName(): string
|
||||||
|
{
|
||||||
|
if ('' === $this->getName()) {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return sprintf('"%s"', preg_replace('/"/u', '\"', $this->getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -27,7 +27,7 @@ class AddressTest extends TestCase
|
||||||
$a = new Address('fabien@symfonï.com', 'Fabien');
|
$a = new Address('fabien@symfonï.com', 'Fabien');
|
||||||
$this->assertEquals('Fabien', $a->getName());
|
$this->assertEquals('Fabien', $a->getName());
|
||||||
$this->assertEquals('fabien@symfonï.com', $a->getAddress());
|
$this->assertEquals('fabien@symfonï.com', $a->getAddress());
|
||||||
$this->assertEquals('Fabien <fabien@xn--symfon-nwa.com>', $a->toString());
|
$this->assertEquals('"Fabien" <fabien@xn--symfon-nwa.com>', $a->toString());
|
||||||
$this->assertEquals('fabien@xn--symfon-nwa.com', $a->getEncodedAddress());
|
$this->assertEquals('fabien@xn--symfon-nwa.com', $a->getEncodedAddress());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,4 +153,10 @@ class AddressTest extends TestCase
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testEncodeNameIfNameContainsCommas()
|
||||||
|
{
|
||||||
|
$address = new Address('fabien@symfony.com', 'Fabien, "Potencier');
|
||||||
|
$this->assertSame('"Fabien, \"Potencier" <fabien@symfony.com>', $address->toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue