如何呈现电子邮件正文
how to render an emailbody
我想将视图用作电子邮件正文。
我试过这个:
$renderer = new PhpRenderer();
$bodyHtml = $renderer->render(
'/user/email/reset-password-email',
[
'passwordResetUrl' => $passwordResetUrl,
]);
$html = new MimePart($bodyHtml);
我收到以下错误:
Unable to render template "/user/email/reset-password-email"; resolver could not resolve to a file
我的视图模板位于:
感谢任何帮助。
您需要从工厂中的服务定位器中检索渲染器,而不是在您使用它的 class 中直接实例化它。
电子邮件发件人class工厂
class EmailSenderFactory {
public function __invoke($services) {
$viewRenderer = $services->get('ViewRenderer');
return new EmailSender($viewRenderer);
}
}
电子邮件发件人class
class EmailSender {
private $viewRenderer;
public function __construct($viewRenderer) {
$this->viewRenderer = $viewRenderer;
}
public function createEmail() {
$template = '/user/email/reset-password-email';
$variables = ['passwordResetUrl' => $passwordResetUrl];
$bodyHtml = $renderer->render($template, $variables);
$html = new MimePart($bodyHtml);
}
}
我遇到了同样的问题(发邮件重设密码),我是这样解决的。希望这对你有帮助:)
要将视图呈现为字符串,您需要一个呈现器“ViewRenderer
”。
如果你能得到ServiceManager,
那么,
$renderer = $serviceManager->get('ViewRenderer');
现在,
$bodyHtml = $renderer->render(
'/user/email/reset-password-email',
[
'passwordResetUrl' => $passwordResetUrl,
]);
$html = new MimePart($bodyHtml);
我想将视图用作电子邮件正文。
我试过这个:
$renderer = new PhpRenderer();
$bodyHtml = $renderer->render(
'/user/email/reset-password-email',
[
'passwordResetUrl' => $passwordResetUrl,
]);
$html = new MimePart($bodyHtml);
我收到以下错误:
Unable to render template "/user/email/reset-password-email"; resolver could not resolve to a file
我的视图模板位于:
感谢任何帮助。
您需要从工厂中的服务定位器中检索渲染器,而不是在您使用它的 class 中直接实例化它。
电子邮件发件人class工厂
class EmailSenderFactory {
public function __invoke($services) {
$viewRenderer = $services->get('ViewRenderer');
return new EmailSender($viewRenderer);
}
}
电子邮件发件人class
class EmailSender {
private $viewRenderer;
public function __construct($viewRenderer) {
$this->viewRenderer = $viewRenderer;
}
public function createEmail() {
$template = '/user/email/reset-password-email';
$variables = ['passwordResetUrl' => $passwordResetUrl];
$bodyHtml = $renderer->render($template, $variables);
$html = new MimePart($bodyHtml);
}
}
我遇到了同样的问题(发邮件重设密码),我是这样解决的。希望这对你有帮助:)
要将视图呈现为字符串,您需要一个呈现器“ViewRenderer
”。
如果你能得到ServiceManager, 那么,
$renderer = $serviceManager->get('ViewRenderer');
现在,
$bodyHtml = $renderer->render(
'/user/email/reset-password-email',
[
'passwordResetUrl' => $passwordResetUrl,
]);
$html = new MimePart($bodyHtml);