当前位置:  开发笔记 > 前端 > 正文

如何使用Thymeleaf处理TXT电子邮件模板?

如何解决《如何使用Thymeleaf处理TXT电子邮件模板?》经验,为你挑选了1个好方法。

我正在尝试plain text使用Thymeleaf从Spring应用程序发送电子邮件.

这是我的电子邮件服务:

@Override
public void sendPasswordToken(Token token) throws ServiceException {
    Assert.notNull(token);

    try {

        Locale locale = Locale.getDefault();

        final Context ctx = new Context(locale);
        ctx.setVariable("url", url(token));

        // Prepare message using a Spring helper
        final MimeMessage mimeMessage = mailSender.createMimeMessage();

        final MimeMessageHelper message = new MimeMessageHelper(
                mimeMessage, false, SpringMailConfig.EMAIL_TEMPLATE_ENCODING
        );

        message.setSubject("Token");
        message.setTo(token.getUser().getUsername());

        final String content = this.textTemplateEngine.process("text/token", ctx);
        message.setText(content, false);

        mailSender.send(mimeMessage);

    } catch (Exception e) {
        throw new ServiceException("Token has not been sent", e);
    }
}

电子邮件被发送并发送到邮箱.

这是我的plain text电子邮件模板:

令牌网址:$ {url}

但是在交付的邮箱中,url变量不会被它的值替换.为什么?

当我使用html经典HTML Thymeleaf语法时,变量被替换:


电子邮件文本模板的正确语法是什么?



1> yglodt..:

您也可以在纯文本模式下使用Thymeleaf,如下例所示:

Dear [(${customer.name})],

This is the list of our products:
[# th:each="p : ${products}"]
   - [(${p.name})]. Price: [(${#numbers.formatdecimal(p.price,1,2)})] EUR/kg
[/]
Thanks,
  The Thymeleaf Shop

这意味着您可以在其中包含一个文本文件:

Token url: [(${url})]

在这里查看这些功能的完整文档:

https://github.com/thymeleaf/thymeleaf/issues/395

编辑

如评论中所述,请务必使用Thymeleaf的版本> = 3.0:


  3.0.3.RELEASE
  2.1.2


是的,你是对的.我使用了来自Spring的Thymeleaf`startet`依赖包,它在版本2.x中添加了Thymeleaf.当我删除版本2并升级到版本3时,语法正常工作,正如您所提到的,它是推荐的方式.
推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有