PHPmailer的细长框架和电子邮件模板呈现问题

Vla*_*vić 1 php email slim psr-7

我正在使用Slim v3 php框架并集成了PHPMailer来发送邮件.我不使用像Twig这样的模板引擎,但我宁愿使用普通的PHP.

我的想法是在单独的文件中为电子邮件制作HTML5模板,类似于常规页面模板,然后将一些变量传递给它,渲染并发送它.除了一个部分外,它一切正常 - 渲染输出也有渲染的标题信息.

这就是我的代码的样子,当然简化了

// Store variables in an array
$email_content = array(
  'email__name' => $_POST['name'],
  'email__from' => $_POST['from'],
  'email__message' => $_POST['message']
);

// Render email template
$template = $this->view->render($response, "email/simple_email.phtml", $email_content);
Run Code Online (Sandbox Code Playgroud)

然后我用PHPMailer发送它

$mail->msgHTML($template);
Run Code Online (Sandbox Code Playgroud)

问题是,除了HTML内容之外,我得到了这个标题数据,这在发送的电子邮件中可见:

HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

有没有办法在没有这个的情况下渲染输出?目前我正在使用str_replace()删除它,但我想有一个优雅的,内置的解决方案来处理这个?

jma*_*eis 8

#render()方法返回a Psr\Http\Message\ResponseInterface,其中包含有关响应的所有信息以及标题信息.

您只需要HTML,因此请#fetch()在视图上使用仅返回HTML的方法.

$template = $this->view->fetch("email/simple_email.phtml", $email_content);
Run Code Online (Sandbox Code Playgroud)