我正在尝试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语法时,变量被替换:
电子邮件文本模板的正确语法是什么?
您也可以在纯文本模式下使用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