我正在使用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->email
是username
,在以下代码的邮件中提及
第二个$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',
],
但是我无法获得名称?我希望收到所有与我们联系的表格,如姓名,电子邮件,主题,正文?事实上,除了电子邮件之外,所有这些都正常了吗?谁能帮忙?
希望正确描述我的问题..
答案 0 :(得分: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();
}