美文网首页
thymeleaf邮件发送支持多种模版解决方式

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

作者: 越陌先生 | 来源:发表于2021-09-18 10:59 被阅读0次

    前言

    之前实现邮件发送使用的 模版是 路径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);
    

    相关文章

      网友评论

          本文标题:thymeleaf邮件发送支持多种模版解决方式

          本文链接:https://www.haomeiwen.com/subject/oqiegltx.html