使用电子邮件渠道时,如何使用通知程序将通知作为 HTML 的内容发送?

How to send the notification as content as HTML with Notifier when using the email channel?

是否可以使用新的 Symfony Notifier 服务以 html 的身份发送电子邮件?怎么样?

这个简单的问题没有太多的上下文可以添加。 Notifier class 是 Symfony 5 中的一项新服务,它实现了通过不同渠道发送通知。它目前被标记为“实验性”,因此在满足特定需求时没有很好的文档。

这里有一些代码示例:

$emailSubject = $this->getParameter('app.registration.email_subject_activation');
$emailContent = $this->render('email/user-activation.html.twig', ['activation_link' => $activationLink]);
$notification = (new Notification($emailSubject, ['email']))->content($emailContent);
$recipient    = new Recipient($user->getEmail());
$sentMessage  = $notifier->send($notification, $recipient);

模板内容为纯文本,带有 html 个标签,全部在电子邮件中。

如果您想发送 HTML 内容,您更适合直接使用 Symfony Mailer 而不是通过 Notifier。

Notifier 是许多具有截然不同功能的传输的抽象。例如。并非所有聊天消息都以相同的方式对待 HTML。短信支持 0 HTML。等等

考虑到这一点,Notifier 迎合了纯文本的最小分母。无论您在 content() 中输入什么,都将以纯文本形式在任何和所有媒体中呈现给最终用户。请记住,同一通知可以同时发送到多个频道。

直接使用 Mailer,你可以简单地做(按照你的例子):

$email = new NotficationEmail();
$email->htmlTemplate('email/user-activation.html.twig')
    ->context(['activation_link' => $activationLink])
    ->to($user->getEmail())
    ->subject($ths->getParameter('app.registration.email_subject_activation'))
;

$mailer->send($email);

您可以根据需要自定义通知消息并创建模板电子邮件。请检查以下 link

https://symfony.com/doc/current/notifier.html#customize-notification-messages

您可以在 Symfony 安全包中检查实现:

Symfony\Component\Security\Http\LoginLink\LoginLinkNotification