diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
index 66abdff023c75..f32b19b9fe86c 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
@@ -356,7 +356,7 @@ public function load(array $configs, ContainerBuilder $container)
}
if ($this->mailerConfigEnabled = $this->isConfigEnabled($container, $config['mailer'])) {
- $this->registerMailerConfiguration($config['mailer'], $container, $loader);
+ $this->registerMailerConfiguration($config['mailer'], $container, $phpLoader);
}
if ($this->isConfigEnabled($container, $config['notifier'])) {
@@ -369,7 +369,7 @@ public function load(array $configs, ContainerBuilder $container)
$this->registerSsiConfiguration($config['ssi'], $container, $loader);
$this->registerFragmentsConfiguration($config['fragments'], $container, $loader);
$this->registerTranslatorConfiguration($config['translator'], $container, $loader, $config['default_locale']);
- $this->registerProfilerConfiguration($config['profiler'], $container, $loader);
+ $this->registerProfilerConfiguration($config['profiler'], $container, $loader, $phpLoader);
$this->registerWorkflowConfiguration($config['workflows'], $container, $loader);
$this->registerDebugConfiguration($config['php_errors'], $container, $loader);
$this->registerRouterConfiguration($config['router'], $container, $loader, $config['translator']['enabled_locales'] ?? []);
@@ -568,7 +568,7 @@ private function registerFragmentsConfiguration(array $config, ContainerBuilder
$container->setParameter('fragment.path', $config['path']);
}
- private function registerProfilerConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
+ private function registerProfilerConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader, PhpFileLoader $phpLoader)
{
if (!$this->isConfigEnabled($container, $config)) {
// this is needed for the WebProfiler to work even if the profiler is disabled
@@ -600,7 +600,7 @@ private function registerProfilerConfiguration(array $config, ContainerBuilder $
}
if ($this->mailerConfigEnabled) {
- $loader->load('mailer_debug.xml');
+ $phpLoader->load('mailer_debug.php');
}
if ($this->httpClientConfigEnabled) {
@@ -1953,14 +1953,14 @@ private function registerHttpClientConfiguration(array $config, ContainerBuilder
}
}
- private function registerMailerConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
+ private function registerMailerConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader)
{
if (!class_exists(Mailer::class)) {
throw new LogicException('Mailer support cannot be enabled as the component is not installed. Try running "composer require symfony/mailer".');
}
- $loader->load('mailer.xml');
- $loader->load('mailer_transports.xml');
+ $loader->load('mailer.php');
+ $loader->load('mailer_transports.php');
if (!\count($config['transports']) && null === $config['dsn']) {
$config['dsn'] = 'smtp://null';
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.php
new file mode 100644
index 0000000000000..c23e9f6ddfbc6
--- /dev/null
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.php
@@ -0,0 +1,75 @@
+
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+
+use Symfony\Component\Mailer\EventListener\EnvelopeListener;
+use Symfony\Component\Mailer\EventListener\MessageListener;
+use Symfony\Component\Mailer\EventListener\MessageLoggerListener;
+use Symfony\Component\Mailer\Mailer;
+use Symfony\Component\Mailer\MailerInterface;
+use Symfony\Component\Mailer\Messenger\MessageHandler;
+use Symfony\Component\Mailer\Transport;
+use Symfony\Component\Mailer\Transport\TransportInterface;
+use Symfony\Component\Mailer\Transport\Transports;
+
+return static function (ContainerConfigurator $container) {
+ $container->services()
+ ->set('mailer.mailer', Mailer::class)
+ ->args([
+ service('mailer.transports'),
+ abstract_arg('message bus'),
+ service('event_dispatcher')->ignoreOnInvalid(),
+ ])
+ ->alias('mailer', 'mailer.mailer')
+ ->alias(MailerInterface::class, 'mailer.mailer')
+
+ ->set('mailer.transports', Transports::class)
+ ->factory([service('mailer.transport_factory'), 'fromStrings'])
+ ->args([
+ abstract_arg('transports'),
+ ])
+
+ ->set('mailer.transport_factory', Transport::class)
+ ->args([
+ tagged_iterator('mailer.transport_factory'),
+ ])
+
+ ->set('mailer.default_transport', TransportInterface::class)
+ ->factory([service('mailer.transport_factory'), 'fromString'])
+ ->args([
+ abstract_arg('env(MAILER_DSN)'),
+ ])
+ ->alias(TransportInterface::class, 'mailer.default_transport')
+
+ ->set('mailer.messenger.message_handler', MessageHandler::class)
+ ->args([
+ service('mailer.transports'),
+ ])
+ ->tag('messenger.message_handler')
+
+ ->set('mailer.envelope_listener', EnvelopeListener::class)
+ ->args([
+ abstract_arg('sender'),
+ abstract_arg('recipients'),
+ ])
+ ->tag('kernel.event_subscriber')
+
+ ->set('mailer.message_listener', MessageListener::class)
+ ->args([
+ abstract_arg('headers'),
+ ])
+ ->tag('kernel.event_subscriber')
+
+ ->set('mailer.logger_message_listener', MessageLoggerListener::class)
+ ->tag('kernel.event_subscriber')
+ ;
+};
diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.xml
deleted file mode 100644
index c267bc675bbc9..0000000000000
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/mailer.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
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: