我在默认的基本Yii2模板中创建了一个附加字段来收集网站地址。我一直在尝试使响应与其他响应一起通过电子邮件发送。
下面的代码相信可以控制此功能:
public function contact($email)
{
if ($this->validate()) {
Yii::$app->mailer->compose()
->setTo($email)
->setFrom([$this->email => $this->name])
->setSubject('Message from Website Contact Form')
->setTextBody($this->website)
->setTextBody($this->details)
->send();
return true;
}
return false;
}
我添加了->setTextBody($this->website)
,但没有在电子邮件中显示该网站。我不知道->setTextBody
是否是正确的代码。
这是下面提供的:
消息ID:<5de1ed1ddd9b60dd923c60296f14b5ee @ localhost> 日期:2019年3月23日,星期六15:47:22 +0100 主题:网站联系表中的消息 来自:倪yi 收件人:admin@example.com MIME版本:1.0 内容类型:文本/纯文本;字符集= utf-8 内容传输编码:带引号的可打印
asmbdnvvvvvvvvvvvvvvvvvvvvvvvvvvvvvbbbbbbbbbbb bbbbbbbbbbbbbbbbbbb bbbbb = bbbbbbbbbb
有关如何解决此问题的任何想法。我想使用->setTextBody($this->website => $this->details)
可以,但是即使可以,我希望它们在不同的行/段上分开
答案 0 :(得分:2)
请注意,您两次致电setTextBody
,但这没有任何意义。
第一次调用设置的值将被第二次调用覆盖。
因此,您在邮件中看到的只是$this->details
的内容,没有看到$this->website
的内容也就不足为奇了。
像这样setTextBody($this->website => $this->details)
设置文本正文也行不通。首先,因为它是错误的php语法。而且即使您像这样setTextBody([$this->website => $this->details])
来修复它,也将失败,因为setTextBody
仅期望纯文本作为输入。
如果您希望同时包含$this->website
和$this->details
并且放在单独的行中,请尝试执行以下操作:setTextBody("$this->website\r\n\r\n$this->details")