diff --git a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md index 40a44c58c4614..081f7339f531c 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +6.2 +--- + + * Add support for the `Envelope`'s options to the Sendgrid API transport + 5.4 --- 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..9d0097584a376 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridApiTransportTest.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Tests/Transport/SendgridApiTransportTest.php @@ -244,4 +244,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/Bridge/Sendgrid/Transport/SendgridApiTransport.php b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php index 9dd8b4b82f597..2d768467c7fcf 100644 --- a/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php +++ b/src/Symfony/Component/Mailer/Bridge/Sendgrid/Transport/SendgridApiTransport.php @@ -145,6 +145,10 @@ private function getPayload(Email $email, Envelope $envelope): array $personalization['custom_args'] = $customArguments; } + foreach ($envelope->getOptions() as $name => $value) { + $payload[$name] = $value; + } + $payload['personalizations'][] = $personalization; return $payload; diff --git a/src/Symfony/Component/Mailer/CHANGELOG.md b/src/Symfony/Component/Mailer/CHANGELOG.md index 8baf27da0891e..c9e46efdc0f5b 100644 --- a/src/Symfony/Component/Mailer/CHANGELOG.md +++ b/src/Symfony/Component/Mailer/CHANGELOG.md @@ -1,6 +1,11 @@ CHANGELOG ========= +6.2 +--- + + * Add the `options` property to `Envelope` + 6.1 --- diff --git a/src/Symfony/Component/Mailer/Envelope.php b/src/Symfony/Component/Mailer/Envelope.php index f35f25f3652eb..eadc91fffe5fa 100644 --- a/src/Symfony/Component/Mailer/Envelope.php +++ b/src/Symfony/Component/Mailer/Envelope.php @@ -23,6 +23,7 @@ class Envelope { private Address $sender; private array $recipients = []; + private array $options = []; /** * @param Address[] $recipients @@ -85,4 +86,20 @@ public function getRecipients(): array { return $this->recipients; } + + /** + * @param mixed $value + */ + public function setOption(string $name, $value): void + { + $this->options[$name] = $value; + } + + /** + * @return array + */ + public function getOptions(): array + { + return $this->options; + } } diff --git a/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php b/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php index de4eb0e0810a2..02c62c4846b60 100644 --- a/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php +++ b/src/Symfony/Component/Mailer/Tests/EnvelopeTest.php @@ -144,4 +144,12 @@ public function testFromRawMessages() Envelope::create(new RawMessage('Some raw email message')); } + + public function testSettingOptions() + { + $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()); + } } 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