Я изучаю поставщиков услуг Laravel, и для начала я пытаюсь переписать Illuminate\Mail\MailServiceProvider
.
И через несколько дней я получил то, что хотел: registerSwiftMailer
метод.
Что действительно привлекло мое внимание, так это следующий комментарий:
// ..., which allows us to
// override this transporter instances during app start-up if necessary.
Суть в том, что «действительно» возможно «переопределить» экземпляры транспортера при запуске приложения, если это необходимо, и как это возможносделать это, например, из контроллера?
registerSwiftMailer
public function registerSwiftMailer()
{
$this->registerSwiftTransport();
// Once we have the transporter registered, we will register the actual Swift
// mailer instance, passing in the transport instances, which allows us to
// override this transporter instances during app start-up if necessary.
$this->app->singleton('swift.mailer', function ($app) {
if ($domain = $app->make('config')->get('mail.domain')) {
Swift_DependencyContainer::getInstance()
->register('mime.idgenerator.idright')
->asValue($domain);
}
return new Swift_Mailer($app['swift.transport']->driver());
});
}