我创建了一个 slim4 操作来发送多个电子邮件。这两封电子邮件从视图中获取输出并发送两封单独的电子邮件。
第一封邮件发送正常,但第二封邮件与第一封邮件的正文一起发送(收件人和主题是正确的。)
我通过调试和跟踪收到的值排除了电子邮件库。我可以确认正在设置相同的响应正文,
我尝试制作 $response 的副本。这并没有改变事情。
下面的代码是一个总结
public function actionContact(RequestInterface $request, ResponseInterface $response, array $args): ResponseInterface
$form_data = (array)$request->getParsedBody();
$notify_view_ = $this->renderer->render(
$response,
'emails/contactus_notify.php',
['form_data' => $form_data]
);
$notify_message = $response->getBody();
$notify_mail = new Email('user1@domain.com, 'Subject 1', $notify_message)->send();
// Send second email
$thankyou_view_ = $this->renderer->render(
$response,
'emails/contactus_thankyou.php',
['form_data' => $form_data]
);
$thankyou_message = $response->getBody();
$thankyou_mail = new Email('user2@domain.com, 'Subject 2', $thankyou_message)->send();
}
经过进一步调试后,我发现第二个 getBody() 实际上是连接两个 render() 的结果。
我尝试重置身体
$response->getBody()->write('');
但这没有效果。第二封电子邮件是通过渲染连接的两个写入。