2016-12-08 7 views
1

私はYii 2でメールを送信しようとしました。すべてがうまくいますが、私は1つの奇妙なことがあります - 私はいつも間違ったメールを "from"アドレス(setFrom()Yii 2メーラー - 間違った "from"フィールド

これはコードです:

public function afterSave($insert, $changedAttributes){ 
    $this->send_email($this->attributes); 
} 

この属性は、メソッドを送信する電子メールに私のフォームから来て、そのデータが正しいです。次のステップでは、私は私の電子メールを送信しよう:

public function send_email($data) 
{ 
    return Yii::$app->mailer->compose('contactEmail', ['data'=>$data]) 
      ->setFrom($data['email']) 
      ->setTo('[email protected]') 
      ->setSubject($data['subject']) 
      ->setTextBody($data['message']) 
      ->send(); 
} 

私は私のアドレスに常に電子メールを送信する:[email protected]。そして私はいつもメッセージを受け取りましたが、メールは[email protected]から送信され、$data['email']に設定されたものからではありません。私はvar_dumpでそれをチェックしようとしたと私はここに正しいデータを得た:

私はすべての私のフォーム入力を記入し、私が送信者として var_dump戻り [email protected][email protected]を設定するが、私は、受信した電子メールをチェックするとき、それが例えば
public function send_email($data) 
{ 
    var_dump($data['email']); 
    exit(); 

    return Yii::$app->mailer->compose('contactEmail', ['data'=>$data]) 
      ->setFrom($data['email']) 
      ->setTo('[email protected]') 
      ->setSubject($data['subject']) 
      ->setTextBody($data['message']) 
      ->send(); 
} 

常に[email protected]からです。 ->setFrom('[email protected]')を使用したときと同じ状況ですが、Gmailのメッセージはまだ[email protected]です。なぜ私はフォームに入力された電子メールからメッセージを受け取ることができないのか理解できません。私はここで何が間違っていますか?

答えて

1

SMTPサーバーとして使用していることを知らずに質問に答えることは難しいです。

あなたのSMTPサーバーとしてのGmail(smtp.gmail.com)を使用していると仮定すると: 問題は、Gmailのサーバー自体で構成した設定です。 [From]フィールドに、電子メールアドレスまたは別名の1つ以外の値を指定することはできません。したがって、[email protected]と認証された場合は、[email protected]としてメールを送信することも、エイリアスとして設定されたアカウントとしてメールを送信することもできます。

エイリアシングの詳細については、https://support.google.com/mail/answer/22370?hl=enを参照してください。

あなたのSMTPサーバとしてのGmail(smtp.gmail.com)を使用していない場合:

(パスワードを除外することを忘れないでください)あなたのSMTPの構成を提供してください?

'mailer' => [ 
      'class' => 'yii\swiftmailer\Mailer', 
      'transport' => [ 
       'class' => 'Swift_SmtpTransport', 
      --->......... 
      ], 
関連する問題