thymeleaf邮件发送支持多种模版解决方式

前言

之前实现邮件发送使用的 模版是 路径classpath:/templates/的html文件


image.png

后来增加需要 是这些模版文件 需要自定义编辑 并保存到数据库表里
那这些模版文件内容就变成了 字符串 , 需要支持两个模版解决方式

解决方式

1 定义两个 TemplateResolver 为spring bean 分别为 字符串解析模版 StringTemplateResolver
和 spring 资源解析模版 SpringResourceTemplateResolver

@Configuration
public class StringTemplateEngineConfig {
    @Bean("stringTemplateResolver")
    public StringTemplateResolver getStringTemplateResolver(){
        StringTemplateResolver stringTemplateResolver = new StringTemplateResolver();
        stringTemplateResolver.setCacheable(true);
        stringTemplateResolver.setTemplateMode(TemplateMode.HTML);
        return stringTemplateResolver;
    }
    @Bean("springResourceTemplateResolver")
    public SpringResourceTemplateResolver getSpringResourceTemplateResolver(){
        SpringResourceTemplateResolver springResourceTemplateResolver = new SpringResourceTemplateResolver();
        springResourceTemplateResolver.setCacheable(true);
        springResourceTemplateResolver.setPrefix("classpath:/templates/");
        springResourceTemplateResolver.setSuffix(".html");
        springResourceTemplateResolver.setTemplateMode(TemplateMode.HTML);
        springResourceTemplateResolver.setApplicationContext(SpringContextHolder.getApplicationContext());
        return springResourceTemplateResolver;
    }
}

在邮件发送时候 类中引入

 @Autowired
   private SpringResourceTemplateResolver springResourceTemplateResolver;
    @Autowired
    private StringTemplateResolver stringTemplateResolver;

每次调用时候 设置解析方式

  templateEngine.setTemplateResolver(springResourceTemplateResolver);
    String emailContent = templateEngine.process(mailBo.getTemplatePath(),context);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。