[FrameworkBundle] Move mailer configuration to php
This commit is contained in:
parent
8df6380fc7
commit
eb88f8856b
@ -356,7 +356,7 @@ class FrameworkExtension extends Extension
|
||||
}
|
||||
|
||||
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 @@ class FrameworkExtension extends Extension
|
||||
$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 @@ class FrameworkExtension extends Extension
|
||||
$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 @@ class FrameworkExtension extends Extension
|
||||
}
|
||||
|
||||
if ($this->mailerConfigEnabled) {
|
||||
$loader->load('mailer_debug.xml');
|
||||
$phpLoader->load('mailer_debug.php');
|
||||
}
|
||||
|
||||
if ($this->httpClientConfigEnabled) {
|
||||
@ -1953,14 +1953,14 @@ class FrameworkExtension extends Extension
|
||||
}
|
||||
}
|
||||
|
||||
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';
|
||||
}
|
||||
|
@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* 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')
|
||||
;
|
||||
};
|
@ -1,51 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<container xmlns="http://symfony.com/schema/dic/services"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
|
||||
|
||||
<services>
|
||||
<service id="mailer.mailer" class="Symfony\Component\Mailer\Mailer">
|
||||
<argument type="service" id="mailer.transports" />
|
||||
<argument /> <!-- message bus-->
|
||||
<argument type="service" id="event_dispatcher" on-invalid="ignore" />
|
||||
</service>
|
||||
<service id="mailer" alias="mailer.mailer" />
|
||||
<service id="Symfony\Component\Mailer\MailerInterface" alias="mailer.mailer" />
|
||||
|
||||
<service id="mailer.transports" class="Symfony\Component\Mailer\Transport\Transports">
|
||||
<factory service="mailer.transport_factory" method="fromStrings" />
|
||||
<argument type="collection" /> <!-- transports -->
|
||||
</service>
|
||||
|
||||
<service id="mailer.transport_factory" class="Symfony\Component\Mailer\Transport">
|
||||
<argument type="tagged_iterator" tag="mailer.transport_factory" />
|
||||
</service>
|
||||
|
||||
<service id="mailer.default_transport" class="Symfony\Component\Mailer\Transport\TransportInterface">
|
||||
<factory service="mailer.transport_factory" method="fromString" />
|
||||
<argument /> <!-- env(MAILER_DSN) -->
|
||||
</service>
|
||||
<service id="Symfony\Component\Mailer\Transport\TransportInterface" alias="mailer.default_transport" />
|
||||
|
||||
<service id="mailer.messenger.message_handler" class="Symfony\Component\Mailer\Messenger\MessageHandler">
|
||||
<argument type="service" id="mailer.transports" />
|
||||
<tag name="messenger.message_handler" />
|
||||
</service>
|
||||
|
||||
<service id="mailer.envelope_listener" class="Symfony\Component\Mailer\EventListener\EnvelopeListener">
|
||||
<argument /> <!-- sender -->
|
||||
<argument /> <!-- recipients -->
|
||||
<tag name="kernel.event_subscriber"/>
|
||||
</service>
|
||||
|
||||
<service id="mailer.message_listener" class="Symfony\Component\Mailer\EventListener\MessageListener">
|
||||
<argument /> <!-- headers -->
|
||||
<tag name="kernel.event_subscriber"/>
|
||||
</service>
|
||||
|
||||
<service id="mailer.logger_message_listener" class="Symfony\Component\Mailer\EventListener\MessageLoggerListener">
|
||||
<tag name="kernel.event_subscriber"/>
|
||||
</service>
|
||||
</services>
|
||||
</container>
|
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* 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\DataCollector\MessageDataCollector;
|
||||
|
||||
return static function (ContainerConfigurator $container) {
|
||||
$container->services()
|
||||
->set('mailer.data_collector', MessageDataCollector::class)
|
||||
->args([
|
||||
service('mailer.logger_message_listener'),
|
||||
])
|
||||
->tag('data_collector', [
|
||||
'template' => '@WebProfiler/Collector/mailer.html.twig',
|
||||
'id' => 'mailer',
|
||||
])
|
||||
;
|
||||
};
|
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<container xmlns="http://symfony.com/schema/dic/services"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
|
||||
|
||||
<services>
|
||||
<service id="mailer.data_collector" class="Symfony\Component\Mailer\DataCollector\MessageDataCollector">
|
||||
<argument type="service" id="mailer.logger_message_listener" />
|
||||
<tag name="data_collector" template="@WebProfiler/Collector/mailer.html.twig" id="mailer" />
|
||||
</service>
|
||||
</services>
|
||||
</container>
|
@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* 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\Bridge\Amazon\Transport\SesTransportFactory;
|
||||
use Symfony\Component\Mailer\Bridge\Google\Transport\GmailTransportFactory;
|
||||
use Symfony\Component\Mailer\Bridge\Mailchimp\Transport\MandrillTransportFactory;
|
||||
use Symfony\Component\Mailer\Bridge\Mailgun\Transport\MailgunTransportFactory;
|
||||
use Symfony\Component\Mailer\Bridge\Postmark\Transport\PostmarkTransportFactory;
|
||||
use Symfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridTransportFactory;
|
||||
use Symfony\Component\Mailer\Transport\AbstractTransportFactory;
|
||||
use Symfony\Component\Mailer\Transport\NullTransportFactory;
|
||||
use Symfony\Component\Mailer\Transport\SendmailTransportFactory;
|
||||
use Symfony\Component\Mailer\Transport\Smtp\EsmtpTransportFactory;
|
||||
|
||||
return static function (ContainerConfigurator $container) {
|
||||
$container->services()
|
||||
->set('mailer.transport_factory.abstract', AbstractTransportFactory::class)
|
||||
->abstract()
|
||||
->args([
|
||||
service('event_dispatcher'),
|
||||
service('http_client')->ignoreOnInvalid(),
|
||||
service('logger')->ignoreOnInvalid(),
|
||||
])
|
||||
|
||||
->set('mailer.transport_factory.amazon', SesTransportFactory::class)
|
||||
->parent('mailer.transport_factory.abstract')
|
||||
->tag('mailer.transport_factory')
|
||||
|
||||
->set('mailer.transport_factory.gmail', GmailTransportFactory::class)
|
||||
->parent('mailer.transport_factory.abstract')
|
||||
->tag('mailer.transport_factory')
|
||||
|
||||
->set('mailer.transport_factory.mailchimp', MandrillTransportFactory::class)
|
||||
->parent('mailer.transport_factory.abstract')
|
||||
->tag('mailer.transport_factory')
|
||||
|
||||
->set('mailer.transport_factory.mailgun', MailgunTransportFactory::class)
|
||||
->parent('mailer.transport_factory.abstract')
|
||||
->tag('mailer.transport_factory')
|
||||
|
||||
->set('mailer.transport_factory.postmark', PostmarkTransportFactory::class)
|
||||
->parent('mailer.transport_factory.abstract')
|
||||
->tag('mailer.transport_factory')
|
||||
|
||||
->set('mailer.transport_factory.sendgrid', SendgridTransportFactory::class)
|
||||
->parent('mailer.transport_factory.abstract')
|
||||
->tag('mailer.transport_factory')
|
||||
|
||||
->set('mailer.transport_factory.null', NullTransportFactory::class)
|
||||
->parent('mailer.transport_factory.abstract')
|
||||
->tag('mailer.transport_factory')
|
||||
|
||||
->set('mailer.transport_factory.sendmail', SendmailTransportFactory::class)
|
||||
->parent('mailer.transport_factory.abstract')
|
||||
->tag('mailer.transport_factory')
|
||||
|
||||
->set('mailer.transport_factory.smtp', EsmtpTransportFactory::class)
|
||||
->parent('mailer.transport_factory.abstract')
|
||||
->tag('mailer.transport_factory', ['priority' => -100])
|
||||
;
|
||||
};
|
@ -1,50 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
|
||||
<container xmlns="http://symfony.com/schema/dic/services"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
|
||||
|
||||
<services>
|
||||
<service id="mailer.transport_factory.abstract" class="Symfony\Component\Mailer\Transport\AbstractTransportFactory" abstract="true">
|
||||
<argument type="service" id="event_dispatcher" />
|
||||
<argument type="service" id="http_client" on-invalid="ignore" />
|
||||
<argument type="service" id="logger" on-invalid="ignore" />
|
||||
</service>
|
||||
|
||||
<service id="mailer.transport_factory.amazon" class="Symfony\Component\Mailer\Bridge\Amazon\Transport\SesTransportFactory" parent="mailer.transport_factory.abstract">
|
||||
<tag name="mailer.transport_factory" />
|
||||
</service>
|
||||
|
||||
<service id="mailer.transport_factory.gmail" class="Symfony\Component\Mailer\Bridge\Google\Transport\GmailTransportFactory" parent="mailer.transport_factory.abstract">
|
||||
<tag name="mailer.transport_factory" />
|
||||
</service>
|
||||
|
||||
<service id="mailer.transport_factory.mailchimp" class="Symfony\Component\Mailer\Bridge\Mailchimp\Transport\MandrillTransportFactory" parent="mailer.transport_factory.abstract">
|
||||
<tag name="mailer.transport_factory" />
|
||||
</service>
|
||||
|
||||
<service id="mailer.transport_factory.mailgun" class="Symfony\Component\Mailer\Bridge\Mailgun\Transport\MailgunTransportFactory" parent="mailer.transport_factory.abstract">
|
||||
<tag name="mailer.transport_factory" />
|
||||
</service>
|
||||
|
||||
<service id="mailer.transport_factory.postmark" class="Symfony\Component\Mailer\Bridge\Postmark\Transport\PostmarkTransportFactory" parent="mailer.transport_factory.abstract">
|
||||
<tag name="mailer.transport_factory" />
|
||||
</service>
|
||||
|
||||
<service id="mailer.transport_factory.sendgrid" class="Symfony\Component\Mailer\Bridge\Sendgrid\Transport\SendgridTransportFactory" parent="mailer.transport_factory.abstract">
|
||||
<tag name="mailer.transport_factory" />
|
||||
</service>
|
||||
|
||||
<service id="mailer.transport_factory.null" class="Symfony\Component\Mailer\Transport\NullTransportFactory" parent="mailer.transport_factory.abstract">
|
||||
<tag name="mailer.transport_factory" />
|
||||
</service>
|
||||
|
||||
<service id="mailer.transport_factory.sendmail" class="Symfony\Component\Mailer\Transport\SendmailTransportFactory" parent="mailer.transport_factory.abstract">
|
||||
<tag name="mailer.transport_factory" />
|
||||
</service>
|
||||
|
||||
<service id="mailer.transport_factory.smtp" class="Symfony\Component\Mailer\Transport\Smtp\EsmtpTransportFactory" parent="mailer.transport_factory.abstract">
|
||||
<tag name="mailer.transport_factory" priority="-100" />
|
||||
</service>
|
||||
</services>
|
||||
</container>
|
Reference in New Issue
Block a user