1

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

 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,它填写了我想要的联系我们表格。在文件- 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',
            ],

但后来我无法得到名字?我想收到与我们联系的所有字段,例如姓名、电子邮件、主题、正文?事实上,除了电子邮件,一切都正常吗?谁能帮忙??

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

4

1 回答 1

0

如果您使用默认ContactForm模型,您只需要在数据库中创建一个表。它可以有像name和这样的字段email

在您的联系表单模型中添加 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();
    }
于 2017-10-31T08:52:18.827 回答