如何将yii2自定义表单字段回复发送到电子邮件

时间:2019-03-23 15:05:01

标签: php yii2

我在默认的基本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)可以,但是即使可以,我希望它们在不同的行/段上分开

1 个答案:

答案 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")