Код: Выделить всё
'mailer1' => [
// config 1
],
'mailer2' => [
// config 2
],
Код: Выделить всё
'mailer1' => [
// config 1
],
'mailer2' => [
// config 2
],
Дмитрий, благодарю за ответ. Но если брать экстремальный случай, например, когда у нас будет 20 разных учетных записей, с которых необходимо отправлять письма? В этом случае мы ведь будем действовать уже как-то иначе? Мне вот этот момент именно понять хотелось бы.
Благодарю за совет.
Код: Выделить всё
<?php
namespace common\factory;
use Yii;
use yii\mail\MailerInterface;
use yii\swiftmailer\Mailer;
use yii\base\NotSupportedException;
class MailerFactory
{
/**
* @param int $category
* @return MailerInterface
* @throws NotSupportedException
*/
public static function getMailerByCategory(int $category): MailerInterface
{
/** @var \yii\swiftmailer\Mailer $mailer */
$mailer = Yii::createObject(Mailer::class);
switch ($category) {
case 0:
$mailer->setTransport([
// config 1
]);
break;
case 1:
$mailer->setTransport([
// config 2
]);
}
return $mailer;
}
}
Код: Выделить всё
'container' => [
'definitions' => [
\yii\swiftmailer\Mailer::class => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail',
'htmlLayout' => 'layouts/html',
'textLayout' => 'layouts/text',
'useFileTransport' => false,
],
]
]
Код: Выделить всё
public function sendEmail()
{
$mailer = MailerFactory::getMailerByCategory($this->category);
/** @var \yii\swiftmailer\Mailer $mailer */
return $mailer
->compose(
['html' => 'question-html', 'text' => 'question-text'],
['question' => $this]
)
->setFrom(...)
->setTo(...)
->setReplyTo(...)
->setSubject(...)
->send();
}