如何通过yii2

时间:2017-10-31 07:26:29

标签: yii2 contactus

我正在使用yii2默认联系我们页面来获取用户的邮件..它工作正常,但我从代码中提到的电子邮件收到邮件到adminEmail这也是我的电子邮件ID。 这是code =>

 public function sendEmail($email)
    {
        return Yii::$app->mailer->compose()
            ->setTo($email)
            ->setFrom([$this->email => $this->name])//want the data from email field..how to achieve that??
            ->setSubject($this->subject)
            ->setTextBody($this->body)
            ->send();
    }

如果我在上面的代码中尝试这样->setFrom([$this->email => $this->email]),我会在收到的电子邮件中收到2个电子邮件ID     第一个$this->emailusername,在以下代码的邮件中提及     第二个$this->email是电子邮件ID,填写了联系我们表单我想要的。 在file-common \ config \ main-local.php

 'mailer' => [
                'class' => 'yii\swiftmailer\Mailer',
                'useFileTransport' => false, 
                'transport' => [
                'class' => 'Swift_SmtpTransport',
                'host' => 'smtp.gmail.com',
                'username' => 'pharmadarshu@gmail.com',
                'password' => '*****',
                'port' => '587',
                'encryption' => 'tls',
            ],

但是我无法获得名称?我希望收到所有与我们联系的表格,如姓名,电子邮件,主题,正文?事实上,除了电子邮件之外,所有这些都正常了吗?谁能帮忙?

希望正确描述我的问题..

1 个答案:

答案 0 :(得分:0)

如果您使用默认的ContactForm模型,则只需在数据库中创建一个表。 它可以包含nameemail

等字段

在联系表单模型中添加tableName方法

public static function tableName()
{
    return '{{%contact_table name}}';
}

然后在Yii中验证后联系动作调用save方法

/**
 * Displays contact page.
 *
 * @return mixed
 */
public function actionContact()
{
    $model = new ContactForm();
    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
      //save data
      $model->save();
       //end save
        if ($model->sendEmail(Yii::$app->params['adminEmail'])) {
            Yii::$app->session->setFlash('success', 'Thank you for contacting us. We will respond to you as soon as possible.');
        } else {
            Yii::$app->session->setFlash('error', 'There was an error sending email.');
        }

        return $this->refresh();
    } else {
        return $this->render('contact', [
            'model' => $model,
        ]);
    }
}

向正文添加电子邮件

 public function sendEmail()
    {

        return Yii::$app
            ->mailer
            ->compose(
                ['html' => 'passwordResetToken-html', 'text' => 'passwordResetToken-text'],
                ['user' => $user]
            )
            ->setFrom([Yii::$app->params['supportEmail'] => Yii::$app->name . ' robot'])
            ->setTo($this->email)//$this->email can be added to the message body
            ->setSubject('Password reset for ' . Yii::$app->name)
            ->send();
    }