diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
index 981a865672296..fd4b7f61959da 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
@@ -2721,6 +2721,7 @@ private function registerNotifierConfiguration(array $config, ContainerBuilder $
NotifierBridge\AllMySms\AllMySmsTransportFactory::class => 'notifier.transport_factory.all-my-sms',
NotifierBridge\AmazonSns\AmazonSnsTransportFactory::class => 'notifier.transport_factory.amazon-sns',
NotifierBridge\Bandwidth\BandwidthTransportFactory::class => 'notifier.transport_factory.bandwidth',
+ NotifierBridge\Brevo\BrevoTransportFactory::class => 'notifier.transport_factory.brevo',
NotifierBridge\Chatwork\ChatworkTransportFactory::class => 'notifier.transport_factory.chatwork',
NotifierBridge\Clickatell\ClickatellTransportFactory::class => 'notifier.transport_factory.clickatell',
NotifierBridge\ClickSend\ClickSendTransportFactory::class => 'notifier.transport_factory.click-send',
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/notifier_transports.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/notifier_transports.php
index 1573aa0bea0a4..886e6bd4cf6f0 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/notifier_transports.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/notifier_transports.php
@@ -22,6 +22,10 @@
->abstract()
->args([service('event_dispatcher'), service('http_client')->ignoreOnInvalid()])
+ ->set('notifier.transport_factory.brevo', Bridge\Brevo\BrevoTransportFactory::class)
+ ->parent('notifier.transport_factory.abstract')
+ ->tag('texter.transport_factory')
+
->set('notifier.transport_factory.slack', Bridge\Slack\SlackTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('chatter.transport_factory')
@@ -279,11 +283,11 @@
->set('notifier.transport_factory.simple-textin', Bridge\SimpleTextin\SimpleTextinTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
-
+
->set('notifier.transport_factory.click-send', Bridge\ClickSend\ClickSendTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
-
+
->set('notifier.transport_factory.smsmode', Bridge\Smsmode\SmsmodeTransportFactory::class)
->parent('notifier.transport_factory.abstract')
->tag('texter.transport_factory')
diff --git a/src/Symfony/Component/Notifier/Bridge/Brevo/.gitattributes b/src/Symfony/Component/Notifier/Bridge/Brevo/.gitattributes
new file mode 100644
index 0000000000000..84c7add058fb5
--- /dev/null
+++ b/src/Symfony/Component/Notifier/Bridge/Brevo/.gitattributes
@@ -0,0 +1,4 @@
+/Tests export-ignore
+/phpunit.xml.dist export-ignore
+/.gitattributes export-ignore
+/.gitignore export-ignore
diff --git a/src/Symfony/Component/Notifier/Bridge/Brevo/.gitignore b/src/Symfony/Component/Notifier/Bridge/Brevo/.gitignore
new file mode 100644
index 0000000000000..c49a5d8df5c65
--- /dev/null
+++ b/src/Symfony/Component/Notifier/Bridge/Brevo/.gitignore
@@ -0,0 +1,3 @@
+vendor/
+composer.lock
+phpunit.xml
diff --git a/src/Symfony/Component/Notifier/Bridge/Brevo/BrevoTransport.php b/src/Symfony/Component/Notifier/Bridge/Brevo/BrevoTransport.php
new file mode 100644
index 0000000000000..3c420044e2afb
--- /dev/null
+++ b/src/Symfony/Component/Notifier/Bridge/Brevo/BrevoTransport.php
@@ -0,0 +1,88 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Notifier\Bridge\Brevo;
+
+use Symfony\Component\Notifier\Exception\TransportException;
+use Symfony\Component\Notifier\Exception\UnsupportedMessageTypeException;
+use Symfony\Component\Notifier\Message\MessageInterface;
+use Symfony\Component\Notifier\Message\SentMessage;
+use Symfony\Component\Notifier\Message\SmsMessage;
+use Symfony\Component\Notifier\Transport\AbstractTransport;
+use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
+use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
+use Symfony\Contracts\HttpClient\HttpClientInterface;
+
+/**
+ * @author Pierre Tanguy
+ */
+final class BrevoTransport extends AbstractTransport
+{
+ protected const HOST = 'api.brevo.com';
+
+ public function __construct(
+ #[\SensitiveParameter] private readonly string $apiKey,
+ private readonly string $sender,
+ HttpClientInterface $client = null,
+ EventDispatcherInterface $dispatcher = null
+ ) {
+ parent::__construct($client, $dispatcher);
+ }
+
+ public function __toString(): string
+ {
+ return sprintf('brevo://%s?sender=%s', $this->getEndpoint(), $this->sender);
+ }
+
+ public function supports(MessageInterface $message): bool
+ {
+ return $message instanceof SmsMessage;
+ }
+
+ protected function doSend(MessageInterface $message): SentMessage
+ {
+ if (!$message instanceof SmsMessage) {
+ throw new UnsupportedMessageTypeException(__CLASS__, SmsMessage::class, $message);
+ }
+
+ $sender = $message->getFrom() ?: $this->sender;
+
+ $response = $this->client->request('POST', 'https://'.$this->getEndpoint().'/v3/transactionalSMS/sms', [
+ 'json' => [
+ 'sender' => $sender,
+ 'recipient' => $message->getPhone(),
+ 'content' => $message->getSubject(),
+ ],
+ 'headers' => [
+ 'api-key' => $this->apiKey,
+ ],
+ ]);
+
+ try {
+ $statusCode = $response->getStatusCode();
+ } catch (TransportExceptionInterface $e) {
+ throw new TransportException('Could not reach the remote Brevo server.', $response, 0, $e);
+ }
+
+ if (201 !== $statusCode) {
+ $error = $response->toArray(false);
+
+ throw new TransportException('Unable to send the SMS: '.$error['message'], $response);
+ }
+
+ $success = $response->toArray(false);
+
+ $sentMessage = new SentMessage($message, (string) $this);
+ $sentMessage->setMessageId($success['messageId']);
+
+ return $sentMessage;
+ }
+}
diff --git a/src/Symfony/Component/Notifier/Bridge/Brevo/BrevoTransportFactory.php b/src/Symfony/Component/Notifier/Bridge/Brevo/BrevoTransportFactory.php
new file mode 100644
index 0000000000000..d4fbe25ce7afe
--- /dev/null
+++ b/src/Symfony/Component/Notifier/Bridge/Brevo/BrevoTransportFactory.php
@@ -0,0 +1,43 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Notifier\Bridge\Brevo;
+
+use Symfony\Component\Notifier\Exception\UnsupportedSchemeException;
+use Symfony\Component\Notifier\Transport\AbstractTransportFactory;
+use Symfony\Component\Notifier\Transport\Dsn;
+
+/**
+ * @author Pierre Tanguy
+ */
+final class BrevoTransportFactory extends AbstractTransportFactory
+{
+ public function create(Dsn $dsn): BrevoTransport
+ {
+ $scheme = $dsn->getScheme();
+
+ if ('brevo' !== $scheme) {
+ throw new UnsupportedSchemeException($dsn, 'brevo', $this->getSupportedSchemes());
+ }
+
+ $apiKey = $this->getUser($dsn);
+ $sender = $dsn->getRequiredOption('sender');
+ $host = 'default' === $dsn->getHost() ? null : $dsn->getHost();
+ $port = $dsn->getPort();
+
+ return (new BrevoTransport($apiKey, $sender, $this->client, $this->dispatcher))->setHost($host)->setPort($port);
+ }
+
+ protected function getSupportedSchemes(): array
+ {
+ return ['brevo'];
+ }
+}
diff --git a/src/Symfony/Component/Notifier/Bridge/Brevo/CHANGELOG.md b/src/Symfony/Component/Notifier/Bridge/Brevo/CHANGELOG.md
new file mode 100644
index 0000000000000..7e873f81cb0fe
--- /dev/null
+++ b/src/Symfony/Component/Notifier/Bridge/Brevo/CHANGELOG.md
@@ -0,0 +1,7 @@
+CHANGELOG
+=========
+
+6.4
+---
+
+* Add the bridge
diff --git a/src/Symfony/Component/Notifier/Bridge/Brevo/LICENSE b/src/Symfony/Component/Notifier/Bridge/Brevo/LICENSE
new file mode 100644
index 0000000000000..3ed9f412ce53d
--- /dev/null
+++ b/src/Symfony/Component/Notifier/Bridge/Brevo/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2023-present Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/src/Symfony/Component/Notifier/Bridge/Brevo/README.md b/src/Symfony/Component/Notifier/Bridge/Brevo/README.md
new file mode 100644
index 0000000000000..1e02dc773b679
--- /dev/null
+++ b/src/Symfony/Component/Notifier/Bridge/Brevo/README.md
@@ -0,0 +1,26 @@
+Brevo Notifier
+===============
+
+Provides [Brevo](https://brevo.com) integration for Symfony Notifier.
+This bridge was created following the rebranding of Sendinblue.
+
+DSN example
+-----------
+
+```
+BREVO_DSN=brevo://API_KEY@default?sender=SENDER
+```
+
+where:
+- `API_KEY` is your api key from your Brevo account
+- `SENDER` is your sender's phone number
+
+See more info at https://developers.brevo.com/reference/sendtransacsms
+
+Resources
+---------
+
+* [Contributing](https://symfony.com/doc/current/contributing/index.html)
+* [Report issues](https://github.com/symfony/symfony/issues) and
+ [send Pull Requests](https://github.com/symfony/symfony/pulls)
+ in the [main Symfony repository](https://github.com/symfony/symfony)
diff --git a/src/Symfony/Component/Notifier/Bridge/Brevo/Tests/BrevoTransportFactoryTest.php b/src/Symfony/Component/Notifier/Bridge/Brevo/Tests/BrevoTransportFactoryTest.php
new file mode 100644
index 0000000000000..07a9185afbd36
--- /dev/null
+++ b/src/Symfony/Component/Notifier/Bridge/Brevo/Tests/BrevoTransportFactoryTest.php
@@ -0,0 +1,53 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Notifier\Bridge\Brevo\Tests;
+
+use Symfony\Component\Notifier\Bridge\Brevo\BrevoTransportFactory;
+use Symfony\Component\Notifier\Test\TransportFactoryTestCase;
+
+final class BrevoTransportFactoryTest extends TransportFactoryTestCase
+{
+ public function createFactory(): BrevoTransportFactory
+ {
+ return new BrevoTransportFactory();
+ }
+
+ public static function createProvider(): iterable
+ {
+ yield [
+ 'brevo://host.test?sender=0611223344',
+ 'brevo://apiKey@host.test?sender=0611223344',
+ ];
+ }
+
+ public static function supportsProvider(): iterable
+ {
+ yield [true, 'brevo://apiKey@default?sender=0611223344'];
+ yield [false, 'somethingElse://apiKey@default?sender=0611223344'];
+ }
+
+ public static function incompleteDsnProvider(): iterable
+ {
+ yield 'missing api_key' => ['brevo://default?sender=0611223344'];
+ }
+
+ public static function missingRequiredOptionProvider(): iterable
+ {
+ yield 'missing option: sender' => ['brevo://apiKey@host.test'];
+ }
+
+ public static function unsupportedSchemeProvider(): iterable
+ {
+ yield ['somethingElse://apiKey@default?sender=0611223344'];
+ yield ['somethingElse://apiKey@host']; // missing "sender" option
+ }
+}
diff --git a/src/Symfony/Component/Notifier/Bridge/Brevo/Tests/BrevoTransportTest.php b/src/Symfony/Component/Notifier/Bridge/Brevo/Tests/BrevoTransportTest.php
new file mode 100644
index 0000000000000..cfdad9f6207e4
--- /dev/null
+++ b/src/Symfony/Component/Notifier/Bridge/Brevo/Tests/BrevoTransportTest.php
@@ -0,0 +1,66 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Notifier\Bridge\Brevo\Tests;
+
+use Symfony\Component\HttpClient\MockHttpClient;
+use Symfony\Component\Notifier\Bridge\Brevo\BrevoTransport;
+use Symfony\Component\Notifier\Exception\TransportException;
+use Symfony\Component\Notifier\Message\ChatMessage;
+use Symfony\Component\Notifier\Message\SmsMessage;
+use Symfony\Component\Notifier\Test\TransportTestCase;
+use Symfony\Component\Notifier\Tests\Transport\DummyMessage;
+use Symfony\Contracts\HttpClient\HttpClientInterface;
+use Symfony\Contracts\HttpClient\ResponseInterface;
+
+final class BrevoTransportTest extends TransportTestCase
+{
+ public static function createTransport(HttpClientInterface $client = null): BrevoTransport
+ {
+ return (new BrevoTransport('api-key', '0611223344', $client ?? new MockHttpClient()))->setHost('host.test');
+ }
+
+ public static function toStringProvider(): iterable
+ {
+ yield ['brevo://host.test?sender=0611223344', self::createTransport()];
+ }
+
+ public static function supportedMessagesProvider(): iterable
+ {
+ yield [new SmsMessage('0611223344', 'Hello!')];
+ }
+
+ public static function unsupportedMessagesProvider(): iterable
+ {
+ yield [new ChatMessage('Hello!')];
+ yield [new DummyMessage()];
+ }
+
+ public function testSendWithErrorResponseThrowsTransportException()
+ {
+ $response = $this->createMock(ResponseInterface::class);
+ $response->expects($this->exactly(2))
+ ->method('getStatusCode')
+ ->willReturn(400);
+ $response->expects($this->once())
+ ->method('getContent')
+ ->willReturn(json_encode(['code' => 400, 'message' => 'bad request']));
+
+ $client = new MockHttpClient(static fn (): ResponseInterface => $response);
+
+ $transport = self::createTransport($client);
+
+ $this->expectException(TransportException::class);
+ $this->expectExceptionMessage('Unable to send the SMS: bad request');
+
+ $transport->send(new SmsMessage('phone', 'testMessage'));
+ }
+}
diff --git a/src/Symfony/Component/Notifier/Bridge/Brevo/composer.json b/src/Symfony/Component/Notifier/Bridge/Brevo/composer.json
new file mode 100644
index 0000000000000..7ee5193cc1f80
--- /dev/null
+++ b/src/Symfony/Component/Notifier/Bridge/Brevo/composer.json
@@ -0,0 +1,34 @@
+{
+ "name": "symfony/brevo-notifier",
+ "type": "symfony-notifier-bridge",
+ "description": "Symfony Brevo Notifier Bridge",
+ "keywords": ["brevo", "notifier"],
+ "homepage": "https://symfony.com",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Pierre Tanguy",
+ "homepage": "https://github.com/petanguy"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "require": {
+ "php": ">=8.1",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/notifier": "^6.4"
+ },
+ "require-dev": {
+ "symfony/event-dispatcher": "^5.4|^6.0"
+ },
+ "autoload": {
+ "psr-4": {"Symfony\\Component\\Notifier\\Bridge\\Brevo\\": ""},
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "minimum-stability": "dev"
+}
+
diff --git a/src/Symfony/Component/Notifier/Bridge/Brevo/phpunit.xml.dist b/src/Symfony/Component/Notifier/Bridge/Brevo/phpunit.xml.dist
new file mode 100644
index 0000000000000..a185c4f2adf76
--- /dev/null
+++ b/src/Symfony/Component/Notifier/Bridge/Brevo/phpunit.xml.dist
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+ ./Tests/
+
+
+
+
+
+ ./
+
+
+ ./Resources
+ ./Tests
+ ./vendor
+
+
+
diff --git a/src/Symfony/Component/Notifier/Bridge/Sendinblue/CHANGELOG.md b/src/Symfony/Component/Notifier/Bridge/Sendinblue/CHANGELOG.md
index b21e89b9d23c9..4190565fa0bab 100644
--- a/src/Symfony/Component/Notifier/Bridge/Sendinblue/CHANGELOG.md
+++ b/src/Symfony/Component/Notifier/Bridge/Sendinblue/CHANGELOG.md
@@ -1,6 +1,11 @@
CHANGELOG
=========
+6.3
+---
+
+* Deprecated the bridge, replaced it with Brevo in reaction to their rebranding.
+
6.2
---
diff --git a/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransport.php b/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransport.php
index 2a83177eff98b..ce44b626b76a2 100644
--- a/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransport.php
+++ b/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransport.php
@@ -23,6 +23,8 @@
/**
* @author Pierre Tondereau
+ *
+ * @deprecated since Symfony 6.3, use BrevoTransport instead
*/
final class SendinblueTransport extends AbstractTransport
{
diff --git a/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransportFactory.php b/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransportFactory.php
index 3d9eddf337bc9..f3e9f0fbee4af 100644
--- a/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransportFactory.php
+++ b/src/Symfony/Component/Notifier/Bridge/Sendinblue/SendinblueTransportFactory.php
@@ -11,17 +11,22 @@
namespace Symfony\Component\Notifier\Bridge\Sendinblue;
+use Symfony\Component\Notifier\Bridge\Brevo\BrevoTransport;
use Symfony\Component\Notifier\Exception\UnsupportedSchemeException;
use Symfony\Component\Notifier\Transport\AbstractTransportFactory;
use Symfony\Component\Notifier\Transport\Dsn;
/**
* @author Pierre Tondereau
+ *
+ * @deprecated since Symfony 6.3, use BrevoTransportFactory instead
*/
final class SendinblueTransportFactory extends AbstractTransportFactory
{
public function create(Dsn $dsn): SendinblueTransport
{
+ trigger_deprecation('symfony/sendinblue-notifier', '6.3', 'The "%s" class is deprecated, use "%s" instead.', SendinblueTransport::class, BrevoTransport::class);
+
$scheme = $dsn->getScheme();
if ('sendinblue' !== $scheme) {
diff --git a/src/Symfony/Component/Notifier/Bridge/Sendinblue/Tests/SendinblueTransportFactoryTest.php b/src/Symfony/Component/Notifier/Bridge/Sendinblue/Tests/SendinblueTransportFactoryTest.php
index 322f07e041495..88e2025c71421 100644
--- a/src/Symfony/Component/Notifier/Bridge/Sendinblue/Tests/SendinblueTransportFactoryTest.php
+++ b/src/Symfony/Component/Notifier/Bridge/Sendinblue/Tests/SendinblueTransportFactoryTest.php
@@ -14,6 +14,9 @@
use Symfony\Component\Notifier\Bridge\Sendinblue\SendinblueTransportFactory;
use Symfony\Component\Notifier\Test\TransportFactoryTestCase;
+/**
+ * @group legacy
+ */
final class SendinblueTransportFactoryTest extends TransportFactoryTestCase
{
public function createFactory(): SendinblueTransportFactory
diff --git a/src/Symfony/Component/Notifier/Bridge/Sendinblue/Tests/SendinblueTransportTest.php b/src/Symfony/Component/Notifier/Bridge/Sendinblue/Tests/SendinblueTransportTest.php
index f2d2f2bfad73f..5b817adfdcc89 100644
--- a/src/Symfony/Component/Notifier/Bridge/Sendinblue/Tests/SendinblueTransportTest.php
+++ b/src/Symfony/Component/Notifier/Bridge/Sendinblue/Tests/SendinblueTransportTest.php
@@ -21,6 +21,9 @@
use Symfony\Contracts\HttpClient\HttpClientInterface;
use Symfony\Contracts\HttpClient\ResponseInterface;
+/**
+ * @group legacy
+ */
final class SendinblueTransportTest extends TransportTestCase
{
public static function createTransport(HttpClientInterface $client = null): SendinblueTransport
diff --git a/src/Symfony/Component/Notifier/Exception/UnsupportedSchemeException.php b/src/Symfony/Component/Notifier/Exception/UnsupportedSchemeException.php
index b11264ce610cf..519af7fee8e96 100644
--- a/src/Symfony/Component/Notifier/Exception/UnsupportedSchemeException.php
+++ b/src/Symfony/Component/Notifier/Exception/UnsupportedSchemeException.php
@@ -28,6 +28,10 @@ class UnsupportedSchemeException extends LogicException
'class' => Bridge\Bandwidth\BandwidthTransportFactory::class,
'package' => 'symfony/bandwidth-notifier',
],
+ 'brevo' => [
+ 'class' => Bridge\Brevo\BrevoTransportFactory::class,
+ 'package' => 'symfony/brevo-notifier',
+ ],
'chatwork' => [
'class' => Bridge\Chatwork\ChatworkTransportFactory::class,
'package' => 'symfony/chatwork-notifier',
diff --git a/src/Symfony/Component/Notifier/Tests/Exception/UnsupportedSchemeExceptionTest.php b/src/Symfony/Component/Notifier/Tests/Exception/UnsupportedSchemeExceptionTest.php
index d211d15422e8f..50146ca8e4a83 100644
--- a/src/Symfony/Component/Notifier/Tests/Exception/UnsupportedSchemeExceptionTest.php
+++ b/src/Symfony/Component/Notifier/Tests/Exception/UnsupportedSchemeExceptionTest.php
@@ -29,6 +29,7 @@ public static function setUpBeforeClass(): void
Bridge\AllMySms\AllMySmsTransportFactory::class => false,
Bridge\AmazonSns\AmazonSnsTransportFactory::class => false,
Bridge\Bandwidth\BandwidthTransportFactory::class => false,
+ Bridge\Brevo\BrevoTransportFactory::class => false,
Bridge\Chatwork\ChatworkTransportFactory::class => false,
Bridge\Clickatell\ClickatellTransportFactory::class => false,
Bridge\ClickSend\ClickSendTransportFactory::class => false,
@@ -112,6 +113,7 @@ public static function messageWhereSchemeIsPartOfSchemeToPackageMapProvider(): \
yield ['allmysms', 'symfony/all-my-sms-notifier'];
yield ['sns', 'symfony/amazon-sns-notifier'];
yield ['bandwidth', 'symfony/bandwidth-notifier'];
+ yield ['brevo', 'symfony/brevo-notifier'];
yield ['clickatell', 'symfony/clickatell-notifier'];
yield ['clicksend', 'symfony/click-send-notifier'];
yield ['contact-everyone', 'symfony/contact-everyone-notifier'];
diff --git a/src/Symfony/Component/Notifier/Transport.php b/src/Symfony/Component/Notifier/Transport.php
index db21d16134598..a1341e6a71571 100644
--- a/src/Symfony/Component/Notifier/Transport.php
+++ b/src/Symfony/Component/Notifier/Transport.php
@@ -31,6 +31,7 @@ final class Transport
Bridge\AllMySms\AllMySmsTransportFactory::class,
Bridge\AmazonSns\AmazonSnsTransportFactory::class,
Bridge\Bandwidth\BandwidthTransportFactory::class,
+ Bridge\Brevo\BrevoTransportFactory::class,
Bridge\Chatwork\ChatworkTransportFactory::class,
Bridge\Clickatell\ClickatellTransportFactory::class,
Bridge\ClickSend\ClickSendTransportFactory::class,