Если это только для теста, то почему бы не установить useFileTransport
, поэтому электронные письма будут сохранены в выбранной вами папке вместо отправки. Для этого настройте его так:
'components' => [
// ...
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'useFileTransport' => true,
],
],
Это позволит сохранить все письма в папке @runtime/mail
, если вы хотите другой один комплект:
'mailer' => [
// ...
'fileTransportPath' => '@runtime/mail', // path or alias here
],
Если вы хотите по-прежнему отправлять электронную почту и переопределить адресатам может, например, расширить класс yii\swiftmailer\Mailer
.
class MyMailer extends \yii\swiftmailer\Mailer
{
public $testmode = false;
public $testemail = '[email protected]';
public function beforeSend($message)
{
if (parent::beforeSend($message)) {
if ($this->testmode) {
$message->setTo($this->testemail);
}
return true;
}
return false;
}
}
Настройка его:
'components' => [
// ...
'mailer' => [
'class' => 'namespace\of\your\class\MyMailer',
// the rest is the same like in your normal config
],
],
И вы можете использовать его так же, как вы используете mailer
компонент все время. Когда пришло время, чтобы переключиться в режим тестирования изменить конфигурацию:
'mailer' => [
'class' => 'namespace\of\your\class\MyMailer',
'testmode' => true,
'testemail' => '[email protected]', // optional if you want to send all to address different than default [email protected]
// the rest is the same like in your normal config
],
С этим, каждое сообщение будет переопределен с адресом получателя.
awesome! такой полный ответ! благодаря!! – LXXIII