From 1cfc76301846afadea663f55a8f3bd9d03e7b4fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Deruss=C3=A9?= Date: Thu, 7 Jan 2021 00:10:20 +0100 Subject: [PATCH] Fix missing BCC recipients in SES bridge --- .../Amazon/Tests/Transport/SesHttpTransportTest.php | 7 +++++++ .../Bridge/Amazon/Transport/SesHttpTransport.php | 10 ++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Mailer/Bridge/Amazon/Tests/Transport/SesHttpTransportTest.php b/src/Symfony/Component/Mailer/Bridge/Amazon/Tests/Transport/SesHttpTransportTest.php index c57d00469d..cc450e5e01 100644 --- a/src/Symfony/Component/Mailer/Bridge/Amazon/Tests/Transport/SesHttpTransportTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Amazon/Tests/Transport/SesHttpTransportTest.php @@ -60,6 +60,12 @@ class SesHttpTransportTest extends TestCase $this->assertStringContainsString('AWS3-HTTPS AWSAccessKeyId=ACCESS_KEY,Algorithm=HmacSHA256,Signature=', $options['headers'][0] ?? $options['request_headers'][0]); parse_str($options['body'], $body); + + $this->assertArrayHasKey('Destinations_member_1', $body); + $this->assertSame('saif.gmati@symfony.com', $body['Destinations_member_1']); + $this->assertArrayHasKey('Destinations_member_2', $body); + $this->assertSame('jeremy@derusse.com', $body['Destinations_member_2']); + $content = base64_decode($body['RawMessage_Data']); $this->assertStringContainsString('Hello!', $content); @@ -83,6 +89,7 @@ class SesHttpTransportTest extends TestCase $mail = new Email(); $mail->subject('Hello!') ->to(new Address('saif.gmati@symfony.com', 'Saif Eddin')) + ->bcc(new Address('jeremy@derusse.com', 'Jérémy Derussé')) ->from(new Address('fabpot@symfony.com', 'Fabien')) ->text('Hello There!'); diff --git a/src/Symfony/Component/Mailer/Bridge/Amazon/Transport/SesHttpTransport.php b/src/Symfony/Component/Mailer/Bridge/Amazon/Transport/SesHttpTransport.php index 8d49c7e6ea..d17d23b1e0 100644 --- a/src/Symfony/Component/Mailer/Bridge/Amazon/Transport/SesHttpTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Amazon/Transport/SesHttpTransport.php @@ -52,7 +52,7 @@ class SesHttpTransport extends AbstractHttpTransport $date = gmdate('D, d M Y H:i:s e'); $auth = sprintf('AWS3-HTTPS AWSAccessKeyId=%s,Algorithm=HmacSHA256,Signature=%s', $this->accessKey, $this->getSignature($date)); - $response = $this->client->request('POST', 'https://'.$this->getEndpoint(), [ + $request = [ 'headers' => [ 'X-Amzn-Authorization' => $auth, 'Date' => $date, @@ -61,7 +61,13 @@ class SesHttpTransport extends AbstractHttpTransport 'Action' => 'SendRawEmail', 'RawMessage.Data' => base64_encode($message->toString()), ], - ]); + ]; + $index = 1; + foreach ($message->getEnvelope()->getRecipients() as $recipient) { + $request['body']['Destinations.member.'.$index++] = $recipient->getAddress(); + } + + $response = $this->client->request('POST', 'https://'.$this->getEndpoint(), $request); $result = new \SimpleXMLElement($response->getContent(false)); if (200 !== $response->getStatusCode()) {