1

是否可以使用新的Symfony Notifier服务以 html 格式发送和发送电子邮件?如何?

没有太多背景可以添加到这个简单的问题。Notifier 类是 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 标签,所有内容都在电子邮件中。

4

2 回答 2

1

如果你想发送 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);
于 2021-02-25T16:12:39.927 回答
1

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

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

你可以检查 Symfony 安全包中的实现:

Symfony\Component\Security\Http\LoginLink\LoginLinkNotification
于 2021-05-28T01:02:14.393 回答