使用视图作为内容发送HTML电子邮件

时间:2018-02-25 18:15:37

标签: php

在我的基本控制器中,我有这个代码,它检查是否有视图然后显示它。我想修改它以用于发送电子邮件。我基本上想要创建包含用于发送邮件的html内容的视图。但是试图正常访问它就像我正在显示一个视图一样不太有效。这是在网站上显示视图的代码。

public function view($view, $data = []) {
    // check for view file
    if(file_exists('../app/views/' . $view . '.php')) {
        require_once '../app/views/' . $view . '.php';
    } else {
        die('View does not exist');
    }
}

要显示视图,我只想在我的控制器中执行此操作:

$this->view('pages/contact-us');

当我尝试发送电子邮件时,我想将视图发送到电子邮件正文中。

$html = $this->view('pages/email');
//other variables go here

$send = new Email();
$send->sendMail($html, $subject, $setFrom, $addReplyTo, $addAddress, $altBody);

这样做失败了。我想我只需要返回视图,但不知道该怎么做。

如果我试试这个:

$html = $this->view('pages/contact-email');

我收到此错误:

致命错误:未捕获的异常:< strong>邮件正文为空< / strong>< br />

更新

我将它添加到控制器类:

public function getView($view, $data = []) {
if(file_exists('../app/views/' . $view . '.php')) {
     return file_get_contents('../app/views/' . $view . '.php');
} else {
    die('View does not exist');
}

}

然后在控制器中执行此操作:

$html = $this->getView('pages/contact-email', $data);

普通的html内容正在显示但不是php。如果我在视图中尝试这个:

<?php echo $data['name']; ?>

没有出现......

1 个答案:

答案 0 :(得分:0)

是的,你只需要在视图功能中添加return。 因为实际上你的$ html是空的。

要返回文件内容,您需要先读取文件,例如:file_get_contents(PATH_OF_YOUR_FILE),然后返回变量内的内容。