From 36eeba7a3a26e81e08d53a3108a251078c198f85 Mon Sep 17 00:00:00 2001 From: Guillaume Verstraete Date: Fri, 3 Jan 2020 02:28:31 +0100 Subject: [PATCH] [Mailer] Fix addresses management in Sendgrid API payload --- .../Tests/Transport/SendgridApiTransportTest.php | 15 +++++++++++---- .../Sendgrid/Transport/SendgridApiTransport.php | 12 ++++++++++-- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridApiTransportTest.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridApiTransportTest.php index 9ad5c280ec..c64dd50552 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridApiTransportTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridApiTransportTest.php @@ -13,6 +13,7 @@ namespace Symfony\Component\Mailer\Bridge\Sendgrid\Tests\Transport; use PHPUnit\Framework\TestCase; use Symfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridApiTransport; +use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Email; use Symfony\Contracts\HttpClient\HttpClientInterface; use Symfony\Contracts\HttpClient\ResponseInterface; @@ -48,8 +49,8 @@ class SendgridApiTransportTest extends TestCase public function testSend() { $email = new Email(); - $email->from('foo@example.com') - ->to('bar@example.com') + $email->from(new Address('foo@example.com', 'Ms. Foo Bar')) + ->to(new Address('bar@example.com', 'Mr. Recipient')) ->bcc('baz@example.com') ->text('content'); @@ -73,12 +74,18 @@ class SendgridApiTransportTest extends TestCase 'json' => [ 'personalizations' => [ [ - 'to' => [['email' => 'bar@example.com']], + 'to' => [[ + 'email' => 'bar@example.com', + 'name' => 'Mr. Recipient', + ]], 'subject' => null, 'bcc' => [['email' => 'baz@example.com']], ], ], - 'from' => ['email' => 'foo@example.com'], + 'from' => [ + 'email' => 'foo@example.com', + 'name' => 'Ms. Foo Bar', + ], 'content' => [ ['type' => 'text/plain', 'value' => 'content'], ], diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php index 262983afd7..37740861b8 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php @@ -63,11 +63,19 @@ class SendgridApiTransport extends AbstractApiTransport private function getPayload(Email $email, Envelope $envelope): array { - $addressStringifier = function (Address $address) {return ['email' => $address->toString()]; }; + $addressStringifier = function (Address $address) { + $stringified = ['email' => $address->getAddress()]; + + if ($address->getName()) { + $stringified['name'] = $address->getName(); + } + + return $stringified; + }; $payload = [ 'personalizations' => [], - 'from' => ['email' => $envelope->getSender()->toString()], + 'from' => $addressStringifier($envelope->getSender()), 'content' => $this->getContent($email), ];