嗯...您实际上可以在您的捆绑包中获取邮件服务并以您需要的方式配置它们。只需获取传输实例,配置其处理程序并mailer
在其中配置注入创建新实例transport
:
$transport = $this->get('swiftmailer.transport');
$transport->setHost('smtp.gmail.com');
$transport->setEncryption('ssl');
$handlers = $transport->getExtensionHandlers();
$handler = $handlers[0];
$handler->setUsername('');
$handler->setPassword('');
$handler->setAuthMode('login');
$mailer = \Swift_Mailer::newInstance($transport);
假设您要使用gmail
传输,我在上面设置了一些属性。对此vendor/symfony/swiftmailer-bundle/Symfony/Bundle/SwiftmailerBundle/DependencyInjection/SwiftmailerExtension.php
运输有简单的检查:
//...
} elseif ('gmail' === $config['transport']) {
$config['encryption'] = 'ssl';
$config['auth_mode'] = 'login';
$config['host'] = 'smtp.gmail.com';
$transport = 'smtp';
} else {
//...
您可以尝试spool
通过获取其容器来进行配置(您必须在获取mailer
服务之前执行此操作):
$this->getContainer()
->setParameter('swiftmailer.spool.file.path, '%kernel.cache_dir%/swiftmailer/spool');
但是默认情况下应该使用这个文件路径。您只需要启用假脱机:
$this->getContainer()->setParameter('swiftmailer.spool.enabled', true);
antiflood
可以用类似的方式配置:
$this->getContainer()->setParameter('swiftmailer.plugin.antiflood.threshold', 99);
$this->getContainer()->setParameter('swiftmailer.plugin.antiflood.sleep', 0);
希望能帮助到你