为什么swiftmailer不会在yii2中显示发件人电子邮件?

时间:2017-05-13 11:24:36

标签: php yii2 swiftmailer

我这里有问题。我在网页上创建了一个Contact表单,其中包括:namesurnameemaildescription。当我提交表单时,电子邮件会发送,但发件人的电子邮件是我的电子邮件。 F.e:

http://imageshack.com/a/img922/801/eVyutz.png

my.email@gmail.com不会显示用户在表单中输入的电子邮件,而是我的电子邮件。然后,当我点击Reply button并输入回信息时,我会将其发送给自己。为什么呢?

这是我做的:

我的mailer

        'mailer' => [
        'class' => 'yii\swiftmailer\Mailer',
        'useFileTransport' => false,
        'transport' => [
            'class' => 'Swift_SmtpTransport',
            'host' => 'smtp.gmail.com',
            'username' => 'my.email@gmail.com',
            'password' => 'password',
            'port' => '465',
            'encryption' => 'ssl',
            'streamOptions' => [ 'ssl' =>
                [ 'allow_self_signed' => true,
                  'verify_peer' => false,
                  'verify_peer_name' => false,
                ],
            ]
        ],
    ],

我的actionContact()

public function actionContact() 
{
    $model = new Contact();
    $model->scenario = Contact::SCENARIO_CREATE;

    if ($model->load(Yii::$app->request->post()) && $model->save()) {
        if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
            Yii::$app->getSession()->setFlash('success', Yii::t('app', 'Success'));
        }
        else {
            Yii::$app->getSession()->setFlash('error', Yii::t('app', 'Failed'));
        }
        return $this->refresh();
    } else {
        return $this->render('contact', [
            'model' => $model,
        ]);
    }
}

我的model function

public function sendEmail($email) 
{
    return Yii::$app->mailer->compose()
            ->setTo($email)
            ->setFrom([$this->email => $this->name." ".$this->surname])
            ->setSubject($this->subject)
            ->setTextBody($this->text)
            ->send();
}
请帮我解决这个问题,有什么不对?谢谢你的帮助!

我想$email变量会出现问题。因为当我使用setFromemail时,它只会显示我的电子邮件。

1 个答案:

答案 0 :(得分:0)

可能是您没有为$ this->电子邮件分配正确的值(请尝试检查此项,例如:使用var_dump($ this-> email)和$ this-> name和$ this->用户名) 你可以使用param.php中指定的适当的param

  <?php
  return [
      'adminEmail' => 'my_mail@my_domain.com',
  ];

public function sendEmail($email) 
{
    return Yii::$app->mailer->compose()
            ->setTo($email)
            ->setFrom([\Yii::$app->params['adminEmail'] => $this->name." ".$this->surname])
            // ->setFrom([\Yii::$app->params['adminEmail'] => 'try fixed test if $this->name and username not work'])           
            ->setSubject($this->subject)
            ->setTextBody($this->text)
            ->send();
}