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 --- pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy