Как вынести настройки Swiftmailer из конфига?

Для выноса настроек Swiftmailer из конфигурационного файла в Yii, можно воспользоваться методом компонента приложения setComponent($id, $config).

Шаг 1: Создайте отдельный файл конфигурации для Swiftmailer, например, swiftmailer.php, который будет содержать настройки почтового сервера. В этом файле вы можете определить параметры, такие как host, port, username, password, encryption, transport, from, replyTo и другие в зависимости от ваших потребностей. Пример конфигурационного файла Swiftmailer:

return [
    'class' => 'yiiswiftmailerMailer',
    'viewPath' => '@app/mail',
    'transport' => [
        'class' => 'Swift_SmtpTransport',
        'host' => 'mail.example.com',
        'username' => 'username',
        'password' => 'password',
        'port' => '465',
        'encryption' => 'ssl',
    ],
];

Шаг 2: В файле конфигурации вашего приложения config/web.php или config/console.php, добавьте следующий код, чтобы использовать созданный конфигурационный файл для Swiftmailer:

$config = [
    // ...
    'components' => [
        // ...
        'mailer' => require(__DIR__ . '/swiftmailer.php'),
        // ...
    ],
    // ...
];

Шаг 3: Теперь вы можете использовать компонент mailer для отправки почты в вашем приложении. Например:

Yii::$app->mailer->compose()
    ->setFrom('[email protected]')
    ->setTo('[email protected]')
    ->setSubject('Testing Swiftmailer')
    ->setTextBody('This is a test email')
    ->send();

Таким образом, настройки Swiftmailer вынесены из конфигурационного файла и могут быть удобно изменены или обновлены без необходимости вносить изменения в основной файл конфигурации приложения. Это делает вашу кодовую базу более гибкой и легкой в сопровождении.