我有以下bean配置
@Qualifier("emailSender")
@Autowired
private val templateEngine: SpringTemplateEngine? = null
@Bean(name = ["emailSender"])
fun springTemplateEngine(): SpringTemplateEngine? {
val templateEngine = SpringTemplateEngine()
templateEngine.addTemplateResolver(htmlTemplateResolver())
return templateEngine
}
@Bean
fun htmlTemplateResolver(): SpringResourceTemplateResolver? {
val emailTemplateResolver = SpringResourceTemplateResolver()
emailTemplateResolver.prefix = "/templates/email/"
emailTemplateResolver.suffix = ".html"
emailTemplateResolver.templateMode = TemplateMode.HTML
emailTemplateResolver.characterEncoding = StandardCharsets.UTF_8.name()
return emailTemplateResolver
}
以下函数用于发送解析模板和发送电子邮件。
fun sendTemplateMessage(to: String, subject: String, text: String) {
val mimeMessage: MimeMessage? = emailSender?.createMimeMessage()
val helper = mimeMessage?.let { MimeMessageHelper(it, "utf-8") }
val context = Context()
context.setVariable("msg", "This is test message")
val htmlMsg = templateEngine!!.process("test-email", context)
helper?.setText(htmlMsg, true)
helper?.setTo(to)
helper?.setSubject(subject)
emailSender?.send(mimeMessage)
}
但这会给出一个FileNotFound异常。
添加类路径:
作为文件路径的前缀。背后的原因是,它将从部署jar的地方获取相对路径,否则它将把给定路径视为绝对路径。
因此按以下方式更改代码:
@Bean
fun htmlTemplateResolver(): SpringResourceTemplateResolver? {
val emailTemplateResolver = SpringResourceTemplateResolver()
emailTemplateResolver.prefix = "classpath:/templates/email/"
emailTemplateResolver.suffix = ".html"
emailTemplateResolver.templateMode = TemplateMode.HTML
emailTemplateResolver.characterEncoding = StandardCharsets.UTF_8.name()
return emailTemplateResolver
}
具体查看ejs官方文档 https://github.com/mde/ejs
我们自己实现了一个轻量级的模板引擎,不要问为什么不用smart之类的,因为我们认为没有必要为了一个小小的模板引擎而引入smaart这样复杂的实现。你可能会说,smart功能强大,支持各种标签,标签也是很强大,而且还可以对模板引擎进行各种"灵活"的配置... 这里我们觉得有必要说明一下: 框架的内置模板引擎基本上实现了我们日常开中所有常用的标签。 不常用的标签我们也做了巧妙的实现。 我们只提供了扩展
内置模板引擎 视图的模板文件可以支持不同的解析规则,默认情况下无需手动初始化模板引擎。 可以通过下面的几种方式对模板引擎进行初始化。 配置文件 内置模板引擎的参数统一在配置目录的template.php文件中配置,例如: return [ // 模板引擎类型 支持 php think 支持扩展 'type' => 'Think', // 模板路径 '
Warning: The packages listed below may be outdated, no longer maintained or even broken. Listing here does not constitute an endorsement or recommendation from the Expressjs project team. Use at your
Use the app.engine(ext, callback) method to create your own template engine. ext refers to the file extension, and callback is the template engine function, which accepts the following items as parame
hi-nginx-java内置了两个mustache模板引擎:mustache.java和jmustache。 以下介绍仅就jmustache而言。 字符串模板 字符串模板是最简单的情况。例如: package test; import hi.request; import hi.response; import hi.route; import java.util.regex.Matcher