2017-10-31 1 views
0

開発とテストでは、Yii2メーラー(swiftmailer)が電子メールを実際のアドレスに送信しないようにしたいが、それを開発者の電子メールで置き換える。それを行うための設定には何かがありますか?Yii2メールキャッチャー

答えて

0

開発環境のコンポーネント設定でuseFileTransporttrueに設定すると、すべての電子メールは送信されませんが、すべての電子メールを簡単にテストできるようにファイルとして保存されます。

+0

私は電子メールを開発者のアドレスに送信します。それは解決策ではありません –

+1

私の解決策はすでにhttps://stackoverflow.com/questions/40538164/override-yii2-swiftmailer-recipientに記載されています – Bizley

0

prodおよびdev環境用にconfigsを設定する必要があります。 yourProject/environments/dev/common/config/main-local.phpとPROD用:DEVの設定(高度なアプリケーションテンプレートを使用している場合)のための
パス手がかりに到達するためのdevの環境のための設定のyourProject/environments/prod/common/config/main-local.php.

You may use EmailTarget class for logs. 例:

return [ 
'bootstrap' => ['log'], 
'components' => [ 
    ... 
    'mailer' => [ 
     'class' => 'yii\swiftmailer\Mailer', 
     'viewPath' => '@common/mail', 
     'useFileTransport' => true,//set this property to false to send mails to real email addresses 
     //comment the following array to send mail using php's mail function 
    ], 
    'log' => [ 
     'targets' => 
      [ 
       [ 
        'class' => 'yii\log\EmailTarget', 
        'levels' => ['error'], 
        'except' => ['yii\web\HttpException:404'], 
        'message' => [ 
         'to' => ['[email protected]'], 
         'from' => ['[email protected]'], 
         'subject' => ' Errors ', 
        ] 
       ], 
      ], 
    ], 
], 

]。

同様の環境ではあるが電子メールが異なる。

あなたはあなただけのparamsここで設定でdevに関するあなたの電子メールを設定することがEmailTargetクラスを使用しない場合:yourProject/environments/prod/common/config/params-local.php

のparams設定例:

return [ 
'sendToEmails' => ['[email protected]', '[email protected]'] 
]; 

PRODためyourProject/environments/dev/common/config/params-local.php. とパスそして、あなたのコードで変数をこのように使用することができます:Yii::$app->params['sendToEmails']メッセージを送信する電子メールの配列を取得します。

configsを完了した後、プロジェクトでphp initコマンドを忘れないようにしてください。

You may see the detailed docs about environments here