From 2a4541616ee111f168b84c12402e4d14f9ebc234 Mon Sep 17 00:00:00 2001 From: Mike Fox Date: Tue, 7 Sep 2021 12:09:28 +0100 Subject: [PATCH 01/15] Enable mail_settings to be sent via Sendgrid API. --- .../Bridge/Sendgrid/Transport/SendgridApiTransport.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php index 9dd8b4b82f597..823070a81db98 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php @@ -125,7 +125,10 @@ private function getPayload(Email $email, Envelope $envelope): array continue; } - if ($header instanceof TagHeader) { + if ('mail_settings' === $name) { + // https://docs.sendgrid.com/ui/sending-email/index-suppressions#bypass-filters-and-v3-mail-send + $payload['mail_settings'] = json_decode($header->getBodyAsString(), true); + } elseif ($header instanceof TagHeader) { if (10 === \count($categories)) { throw new TransportException(sprintf('Too many "%s" instances present in the email headers. Sendgrid does not accept more than 10 categories on an email.', TagHeader::class)); } From a6536e320a5efe6fc8460e07aef4d36f6ff07565 Mon Sep 17 00:00:00 2001 From: Mike Fox Date: Tue, 7 Sep 2021 12:27:14 +0100 Subject: [PATCH 02/15] Add changelog. --- src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md index 40a44c58c4614..962ecf2bc4f3e 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md @@ -12,6 +12,7 @@ CHANGELOG * [BC BREAK] Renamed and moved `Symfony\Component\Mailer\Bridge\Sendgrid\Http\Api\SendgridTransport` to `Symfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridApiTransport`, `Symfony\Component\Mailer\Bridge\Sendgrid\Smtp\SendgridTransport` to `Symfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridSmtpTransport`. + * The "mail_settings" property can be set when using the SendgridApiTransport 4.3.0 ----- From 489e37a6f569ff544ddc1f146ba06224d0f4a217 Mon Sep 17 00:00:00 2001 From: Michael Fox Date: Mon, 20 Sep 2021 09:29:27 +0100 Subject: [PATCH 03/15] Update CHANGELOG.md --- src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md index 962ecf2bc4f3e..da8ad223adc99 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md @@ -5,6 +5,7 @@ CHANGELOG --- * Add support for `TagHeader` and `MetadataHeader` to the Sendgrid API transport + * The "mail_settings" property can be set when using the SendgridApiTransport 4.4.0 ----- @@ -12,7 +13,6 @@ CHANGELOG * [BC BREAK] Renamed and moved `Symfony\Component\Mailer\Bridge\Sendgrid\Http\Api\SendgridTransport` to `Symfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridApiTransport`, `Symfony\Component\Mailer\Bridge\Sendgrid\Smtp\SendgridTransport` to `Symfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridSmtpTransport`. - * The "mail_settings" property can be set when using the SendgridApiTransport 4.3.0 ----- From e2537a237e3ac4cabe25eba5836dcc7d3c9da634 Mon Sep 17 00:00:00 2001 From: Mike Fox Date: Fri, 8 Oct 2021 17:47:46 +0100 Subject: [PATCH 04/15] Improved version. --- .../Finder/Tests/Fixtures/gitignore/a.txt | 0 .../Finder/Tests/Fixtures/gitignore/dir/b.txt | 0 .../Transport/SendgridApiTransport.php | 11 ++++-- .../Transport/SendgridMailSetting.php | 13 +++++++ src/Symfony/Component/Mailer/Envelope.php | 22 ++++++++++- .../Transport/AbstractTransportSetting.php | 37 +++++++++++++++++++ .../Transport/TransportSettingInterface.php | 22 +++++++++++ 7 files changed, 99 insertions(+), 6 deletions(-) create mode 100644 src/Symfony/Component/Finder/Tests/Fixtures/gitignore/a.txt create mode 100644 src/Symfony/Component/Finder/Tests/Fixtures/gitignore/dir/b.txt create mode 100644 src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridMailSetting.php create mode 100644 src/Symfony/Component/Mailer/Transport/AbstractTransportSetting.php create mode 100644 src/Symfony/Component/Mailer/Transport/TransportSettingInterface.php diff --git a/src/Symfony/Component/Finder/Tests/Fixtures/gitignore/a.txt b/src/Symfony/Component/Finder/Tests/Fixtures/gitignore/a.txt new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/Symfony/Component/Finder/Tests/Fixtures/gitignore/dir/b.txt b/src/Symfony/Component/Finder/Tests/Fixtures/gitignore/dir/b.txt new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php index 823070a81db98..17652ee212d26 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php @@ -125,10 +125,7 @@ private function getPayload(Email $email, Envelope $envelope): array continue; } - if ('mail_settings' === $name) { - // https://docs.sendgrid.com/ui/sending-email/index-suppressions#bypass-filters-and-v3-mail-send - $payload['mail_settings'] = json_decode($header->getBodyAsString(), true); - } elseif ($header instanceof TagHeader) { + if ($header instanceof TagHeader) { if (10 === \count($categories)) { throw new TransportException(sprintf('Too many "%s" instances present in the email headers. Sendgrid does not accept more than 10 categories on an email.', TagHeader::class)); } @@ -148,6 +145,12 @@ private function getPayload(Email $email, Envelope $envelope): array $personalization['custom_args'] = $customArguments; } + foreach ($envelope->getTransportSettings() as $setting) { + if ($setting instanceof SendgridMailSetting) { + $payload['mail_settings'] = $setting->getValue(); + } + } + $payload['personalizations'][] = $personalization; return $payload; diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridMailSetting.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridMailSetting.php new file mode 100644 index 0000000000000..753a619b3b51f --- /dev/null +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridMailSetting.php @@ -0,0 +1,13 @@ +recipients; } + + /** + * @param TransportSettingInterface[] $transportSettings + */ + public function setTransportSettings(array $transportSettings): void + { + $this->transportSettings = $transportSettings; + } + + /** + * @return TransportSettingInterface[] + */ + public function getTransportSettings(): array + { + return $this->transportSettings; + } } diff --git a/src/Symfony/Component/Mailer/Transport/AbstractTransportSetting.php b/src/Symfony/Component/Mailer/Transport/AbstractTransportSetting.php new file mode 100644 index 0000000000000..b69a5965bc2a6 --- /dev/null +++ b/src/Symfony/Component/Mailer/Transport/AbstractTransportSetting.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Mailer\Transport; + +abstract class AbstractTransportSetting implements TransportSettingInterface +{ + private $name; + private $value; + + public function __construct(string $name, $value) + { + $this->name = $name; + $this->value = $value; + } + + public function getName(): string + { + return $this->name; + } + + /** + * @return string|array + */ + public function getValue() + { + return $this->value; + } +} diff --git a/src/Symfony/Component/Mailer/Transport/TransportSettingInterface.php b/src/Symfony/Component/Mailer/Transport/TransportSettingInterface.php new file mode 100644 index 0000000000000..e37bd6936c075 --- /dev/null +++ b/src/Symfony/Component/Mailer/Transport/TransportSettingInterface.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Mailer\Transport; + +interface TransportSettingInterface +{ + public function getName(): string; + + /** + * @return string|array + */ + public function getValue(); +} From 6f081b231c587c9585117d2cb50de3f9f7d53a0d Mon Sep 17 00:00:00 2001 From: Mike Fox Date: Fri, 8 Oct 2021 17:51:41 +0100 Subject: [PATCH 05/15] Update docs. --- src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md index da8ad223adc99..46513dd2e942b 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md @@ -5,7 +5,7 @@ CHANGELOG --- * Add support for `TagHeader` and `MetadataHeader` to the Sendgrid API transport - * The "mail_settings" property can be set when using the SendgridApiTransport + * Add support for setting the "mail_settings" property when using the SendgridApiTransport 4.4.0 ----- From 811a2f31adbf34c11c6ed98441d8c74eca330fd5 Mon Sep 17 00:00:00 2001 From: Mike Fox Date: Fri, 8 Oct 2021 18:12:53 +0100 Subject: [PATCH 06/15] Add license to file. --- .../Bridge/Sendgrid/Transport/SendgridMailSetting.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridMailSetting.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridMailSetting.php index 753a619b3b51f..14f86c72d892f 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridMailSetting.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridMailSetting.php @@ -1,5 +1,14 @@ + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + namespace Symfony\Component\Mailer\Bridge\Sendgrid\Transport; use Symfony\Component\Mailer\Transport\AbstractTransportSetting; From 92c8bf79af9d30973deaceb6d7272fc291ee8aee Mon Sep 17 00:00:00 2001 From: Mike Fox Date: Thu, 2 Dec 2021 10:11:47 +0000 Subject: [PATCH 07/15] Simplify the implementation. --- .../Finder/Tests/Fixtures/gitignore/a.txt | 0 .../Finder/Tests/Fixtures/gitignore/dir/b.txt | 0 .../Transport/SendgridApiTransport.php | 6 +-- .../Transport/SendgridMailSetting.php | 22 ----------- src/Symfony/Component/Mailer/Envelope.php | 16 ++++---- .../Transport/AbstractTransportSetting.php | 37 ------------------- .../Transport/TransportSettingInterface.php | 22 ----------- 7 files changed, 11 insertions(+), 92 deletions(-) delete mode 100644 src/Symfony/Component/Finder/Tests/Fixtures/gitignore/a.txt delete mode 100644 src/Symfony/Component/Finder/Tests/Fixtures/gitignore/dir/b.txt delete mode 100644 src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridMailSetting.php delete mode 100644 src/Symfony/Component/Mailer/Transport/AbstractTransportSetting.php delete mode 100644 src/Symfony/Component/Mailer/Transport/TransportSettingInterface.php diff --git a/src/Symfony/Component/Finder/Tests/Fixtures/gitignore/a.txt b/src/Symfony/Component/Finder/Tests/Fixtures/gitignore/a.txt deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/src/Symfony/Component/Finder/Tests/Fixtures/gitignore/dir/b.txt b/src/Symfony/Component/Finder/Tests/Fixtures/gitignore/dir/b.txt deleted file mode 100644 index e69de29bb2d1d..0000000000000 diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php index 17652ee212d26..d684897563c8d 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php @@ -145,9 +145,9 @@ private function getPayload(Email $email, Envelope $envelope): array $personalization['custom_args'] = $customArguments; } - foreach ($envelope->getTransportSettings() as $setting) { - if ($setting instanceof SendgridMailSetting) { - $payload['mail_settings'] = $setting->getValue(); + foreach ($envelope->getOptions() as $name => $value) { + if ('mail_settings' === $name) { + $payload['mail_settings'] = $value; } } diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridMailSetting.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridMailSetting.php deleted file mode 100644 index 14f86c72d892f..0000000000000 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridMailSetting.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mailer\Bridge\Sendgrid\Transport; - -use Symfony\Component\Mailer\Transport\AbstractTransportSetting; - -class SendgridMailSetting extends AbstractTransportSetting -{ - public function __construct(array $value) - { - parent::__construct('mail_setting', $value); - } -} diff --git a/src/Symfony/Component/Mailer/Envelope.php b/src/Symfony/Component/Mailer/Envelope.php index aceb25e3be31d..86d8a3960e93e 100644 --- a/src/Symfony/Component/Mailer/Envelope.php +++ b/src/Symfony/Component/Mailer/Envelope.php @@ -13,7 +13,6 @@ use Symfony\Component\Mailer\Exception\InvalidArgumentException; use Symfony\Component\Mailer\Exception\LogicException; -use Symfony\Component\Mailer\Transport\TransportSettingInterface; use Symfony\Component\Mime\Address; use Symfony\Component\Mime\RawMessage; @@ -24,7 +23,7 @@ class Envelope { private $sender; private $recipients = []; - private $transportSettings = []; + private $options = []; /** * @param Address[] $recipients @@ -89,18 +88,19 @@ public function getRecipients(): array } /** - * @param TransportSettingInterface[] $transportSettings + * @param string $name + * @param mixed $value */ - public function setTransportSettings(array $transportSettings): void + public function setOption(string $name, $value): void { - $this->transportSettings = $transportSettings; + $this->options[$name] = $value; } /** - * @return TransportSettingInterface[] + * @return array */ - public function getTransportSettings(): array + public function getOptions(): array { - return $this->transportSettings; + return $this->options; } } diff --git a/src/Symfony/Component/Mailer/Transport/AbstractTransportSetting.php b/src/Symfony/Component/Mailer/Transport/AbstractTransportSetting.php deleted file mode 100644 index b69a5965bc2a6..0000000000000 --- a/src/Symfony/Component/Mailer/Transport/AbstractTransportSetting.php +++ /dev/null @@ -1,37 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mailer\Transport; - -abstract class AbstractTransportSetting implements TransportSettingInterface -{ - private $name; - private $value; - - public function __construct(string $name, $value) - { - $this->name = $name; - $this->value = $value; - } - - public function getName(): string - { - return $this->name; - } - - /** - * @return string|array - */ - public function getValue() - { - return $this->value; - } -} diff --git a/src/Symfony/Component/Mailer/Transport/TransportSettingInterface.php b/src/Symfony/Component/Mailer/Transport/TransportSettingInterface.php deleted file mode 100644 index e37bd6936c075..0000000000000 --- a/src/Symfony/Component/Mailer/Transport/TransportSettingInterface.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Symfony\Component\Mailer\Transport; - -interface TransportSettingInterface -{ - public function getName(): string; - - /** - * @return string|array - */ - public function getValue(); -} From f4a4a1e2b17079684dff2ee73dec8256d090845c Mon Sep 17 00:00:00 2001 From: Mike Fox Date: Thu, 2 Dec 2021 10:12:28 +0000 Subject: [PATCH 08/15] Clean up. --- src/Symfony/Component/Mailer/Envelope.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Symfony/Component/Mailer/Envelope.php b/src/Symfony/Component/Mailer/Envelope.php index 86d8a3960e93e..5c9c1b84813cd 100644 --- a/src/Symfony/Component/Mailer/Envelope.php +++ b/src/Symfony/Component/Mailer/Envelope.php @@ -21,9 +21,9 @@ */ class Envelope { - private $sender; - private $recipients = []; - private $options = []; + private Address $sender; + private array $recipients = []; + private array $options = []; /** * @param Address[] $recipients From caede9b0eb655ce58cd60132e0312121179de1d2 Mon Sep 17 00:00:00 2001 From: Mike Fox Date: Thu, 2 Dec 2021 10:16:30 +0000 Subject: [PATCH 09/15] Improve description. --- src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md | 7 ++++++- src/Symfony/Component/Mailer/CHANGELOG.md | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md index 46513dd2e942b..faaa892b70cb4 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md @@ -1,11 +1,16 @@ CHANGELOG ========= +6.1 +--- + +* Check the `Envelope` options for a "mail_settings" property and send it in + the payload to Sendgrid + 5.4 --- * Add support for `TagHeader` and `MetadataHeader` to the Sendgrid API transport - * Add support for setting the "mail_settings" property when using the SendgridApiTransport 4.4.0 ----- diff --git a/src/Symfony/Component/Mailer/CHANGELOG.md b/src/Symfony/Component/Mailer/CHANGELOG.md index 8baf27da0891e..8b0cb19657d1b 100644 --- a/src/Symfony/Component/Mailer/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +6.2 +--- + + * Added the `options` property to `Envelope` + 6.1 --- From 937bc8cb1b051a3c87ef53f0f50d117967f59a43 Mon Sep 17 00:00:00 2001 From: Mike Fox Date: Thu, 2 Dec 2021 10:17:06 +0000 Subject: [PATCH 10/15] Tweak. --- src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md index faaa892b70cb4..59c2640258171 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md @@ -4,8 +4,8 @@ CHANGELOG 6.1 --- -* Check the `Envelope` options for a "mail_settings" property and send it in - the payload to Sendgrid +* Check the `Envelope` options for a "mail_settings" property and send the + value in the payload to Sendgrid 5.4 --- From b48d5f4bfea54ed958255b8a878fd0237f2b0310 Mon Sep 17 00:00:00 2001 From: Mike Fox Date: Thu, 2 Dec 2021 10:40:15 +0000 Subject: [PATCH 11/15] Add unit tests. --- .../Transport/SendgridApiTransportTest.php | 18 ++++++++++++++++++ .../Component/Mailer/Tests/EnvelopeTest.php | 9 +++++++++ 2 files changed, 27 insertions(+) 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 ef6d2a51a26cd..cefa1546d38de 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridApiTransportTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridApiTransportTest.php @@ -18,6 +18,7 @@ use Symfony\Component\Mailer\Header\TagHeader; use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Email; +use Symfony\Component\Mime\Message; use Symfony\Contracts\HttpClient\HttpClientInterface; use Symfony\Contracts\HttpClient\ResponseInterface; @@ -244,4 +245,21 @@ public function testTagAndMetadataHeaders() $this->assertSame('blue', $payload['personalizations'][0]['custom_args']['Color']); $this->assertSame('12345', $payload['personalizations'][0]['custom_args']['Client-ID']); } + + public function testEnvelopeOptions() + { + $expectedMailerSettings = ['bypass_unsubscribe_management' => ['enable' => true]]; + + $email = new Email(); + $envelope = new Envelope(new Address('envelopefrom@example.com'), [new Address('envelopeto@example.com')]); + $envelope->setOption('mail_settings', $expectedMailerSettings); + + $transport = new SendgridApiTransport('ACCESS_KEY'); + $method = new \ReflectionMethod(SendgridApiTransport::class, 'getPayload'); + $method->setAccessible(true); + $payload = $method->invoke($transport, $email, $envelope); + + $this->assertArrayHasKey('mail_settings', $payload); + $this->assertSame($payload['mail_settings'], $expectedMailerSettings); + } } diff --git a/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php b/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php index de4eb0e0810a2..90e9278162cac 100644 --- a/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php +++ b/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php @@ -144,4 +144,13 @@ public function testFromRawMessages() Envelope::create(new RawMessage('Some raw email message')); } + + public function testSettingOptions() + { + $message = $this->getMockBuilder(Message::class)->getMock(); + $e = Envelope::create($message); + $e->setOption('setting_name1', 'setting_value1'); + $e->setOption('setting_name2', 'setting_value2'); + $this->assertEquals(['setting_name1' => 'setting_value1', 'setting_name2' => 'setting_value2'], $e->getOptions()); + } } From 87f3d326abc5b2f20ed9f12b5dd239344f341588 Mon Sep 17 00:00:00 2001 From: Mike Fox Date: Thu, 2 Dec 2021 10:48:20 +0000 Subject: [PATCH 12/15] Coding standards. --- .../Bridge/Sendgrid/Tests/Transport/SendgridApiTransportTest.php | 1 - src/Symfony/Component/Mailer/Envelope.php | 1 - 2 files changed, 2 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 cefa1546d38de..9d0097584a376 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridApiTransportTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridApiTransportTest.php @@ -18,7 +18,6 @@ use Symfony\Component\Mailer\Header\TagHeader; use Symfony\Component\Mime\Address; use Symfony\Component\Mime\Email; -use Symfony\Component\Mime\Message; use Symfony\Contracts\HttpClient\HttpClientInterface; use Symfony\Contracts\HttpClient\ResponseInterface; diff --git a/src/Symfony/Component/Mailer/Envelope.php b/src/Symfony/Component/Mailer/Envelope.php index 5c9c1b84813cd..eadc91fffe5fa 100644 --- a/src/Symfony/Component/Mailer/Envelope.php +++ b/src/Symfony/Component/Mailer/Envelope.php @@ -88,7 +88,6 @@ public function getRecipients(): array } /** - * @param string $name * @param mixed $value */ public function setOption(string $name, $value): void From 1fc666f8200c28c8079835ef9bbeb4a067d03d9d Mon Sep 17 00:00:00 2001 From: Mike Fox Date: Thu, 2 Dec 2021 10:59:23 +0000 Subject: [PATCH 13/15] Remove if statement. --- .../Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php index d684897563c8d..2d768467c7fcf 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php @@ -146,9 +146,7 @@ private function getPayload(Email $email, Envelope $envelope): array } foreach ($envelope->getOptions() as $name => $value) { - if ('mail_settings' === $name) { - $payload['mail_settings'] = $value; - } + $payload[$name] = $value; } $payload['personalizations'][] = $personalization; From 21063b6bf2487288a40ea8e09db529cfe7d14ed6 Mon Sep 17 00:00:00 2001 From: Maxime Pinot Date: Sat, 9 Jul 2022 12:05:54 +0200 Subject: [PATCH 14/15] Fix --- src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md | 5 ++--- src/Symfony/Component/Mailer/Tests/EnvelopeTest.php | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md index 59c2640258171..de9675b126a3d 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md @@ -1,11 +1,10 @@ CHANGELOG ========= -6.1 +6.2 --- -* Check the `Envelope` options for a "mail_settings" property and send the - value in the payload to Sendgrid + * The Sendgrid API transport now adds the `Envelope`'s options to the payload 5.4 --- diff --git a/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php b/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php index 90e9278162cac..02c62c4846b60 100644 --- a/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php +++ b/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php @@ -147,8 +147,7 @@ public function testFromRawMessages() public function testSettingOptions() { - $message = $this->getMockBuilder(Message::class)->getMock(); - $e = Envelope::create($message); + $e = Envelope::create(new Message()); $e->setOption('setting_name1', 'setting_value1'); $e->setOption('setting_name2', 'setting_value2'); $this->assertEquals(['setting_name1' => 'setting_value1', 'setting_name2' => 'setting_value2'], $e->getOptions()); From ec2b2836af540598320cc3b21d60fb0ef63bbaac Mon Sep 17 00:00:00 2001 From: Maxime Pinot Date: Sat, 9 Jul 2022 12:14:41 +0200 Subject: [PATCH 15/15] Improve CHANGELOG --- src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md | 2 +- src/Symfony/Component/Mailer/CHANGELOG.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md index de9675b126a3d..081f7339f531c 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md @@ -4,7 +4,7 @@ CHANGELOG 6.2 --- - * The Sendgrid API transport now adds the `Envelope`'s options to the payload + * Add support for the `Envelope`'s options to the Sendgrid API transport 5.4 --- diff --git a/src/Symfony/Component/Mailer/CHANGELOG.md b/src/Symfony/Component/Mailer/CHANGELOG.md index 8b0cb19657d1b..c9e46efdc0f5b 100644 --- a/src/Symfony/Component/Mailer/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/CHANGELOG.md @@ -4,7 +4,7 @@ CHANGELOG 6.2 --- - * Added the `options` property to `Envelope` + * Add the `options` property to `Envelope` 6.1 ---