Springboot邮件模板选择及原因

一.Springboot邮件模板可选项

  • Thymeleaf
  • Freemarker
  • Velocity

二.测试代码

1.Thymeleaf模板
  • 模板部分

    <!DOCTYPE html>
    <!-- 使用xmlns声明为thymeleaf模板 -->
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>邮件模板</title>
    </head>
    <body>
        <p th:text="${info}"></p>
    </body>
    </html>
    
  • 测试部分

    @Test
    public void testTemplateMailTest() throws MessagingException {
        Context context = new Context();
        context.setVariable("info","您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!");
        long startTime = System.currentTimeMillis();
        String emailContent = templateEngine.process("emailThymeleaf",context);//参数一模板引擎名字,第二个参数是变量键值,读出一个html的文本
        long endTime = System.currentTimeMillis();
        log.info("Thymeleaf:\t"+(endTime-startTime));
        log.info(emailContent);
        //emailService.sendHTMLMail("18041168530@163.com","模板邮件",emailContent);
    }
    
2.Freemarker模板
  • 模板部分

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>邮件模板</title>
    </head>
    <body>
        ${(info)}
    </body>
    </html>
    
  • 测试部分

    @Test
    public void testFreeMarker() throws IOException, TemplateException {
        Map<String, Object> model = new HashMap<>();
        model.put("info", "您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!");
        long startTime = System.currentTimeMillis();
        Template template = configurer.getConfiguration().getTemplate("emailFreeMarker.ftl");
        String emailContent = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);
        long endTime = System.currentTimeMillis();
        log.info("FreeMarker:\t"+(endTime-startTime));
        log.info(emailContent);
    }
    
3.Velocity模板
  • 模板部分

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>邮件模板</title>
    </head>
    <body>
        ${info}
    </body>
    </html>
    
  • 测试部分

    @Test
    public void testVelocity(){
        Map<String,Object>model = new HashMap<>();
        model.put("info", "您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!");
        long startTime = System.currentTimeMillis();
        String emailContent = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "emailVelocity.vm", "utf-8", model);
        long endTime = System.currentTimeMillis();
        log.info("Velocity:\t"+(endTime-startTime));
        log.info(emailContent);
    }
    
  • 注:spring boot最新版已经不支持Velocity

三.测试结果

1.Thymeleaf模板[只列举5次]
#No.1
2018-11-19 00:35:04.027  INFO 7157 --- [           main] c.example.demo.service.EmailServiceTest  : Thymeleaf:	275
2018-11-19 00:35:04.027  INFO 7157 --- [           main] c.example.demo.service.EmailServiceTest  : <!DOCTYPE html>
<!-- 使用xmlns声明为thymeleaf模板 -->
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>邮件模板</title>
</head>
<body>
    <p>您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!</p>
</body>
</html>
2018-11-19 00:35:04.032  INFO 7157 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

#No.2
2018-11-19 00:35:36.560  INFO 7160 --- [           main] c.example.demo.service.EmailServiceTest  : Thymeleaf:	276
2018-11-19 00:35:36.560  INFO 7160 --- [           main] c.example.demo.service.EmailServiceTest  : <!DOCTYPE html>
<!-- 使用xmlns声明为thymeleaf模板 -->
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>邮件模板</title>
</head>
<body>
    <p>您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!</p>
</body>
</html>
2018-11-19 00:35:36.565  INFO 7160 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

#No.3
2018-11-19 00:36:09.616  INFO 7167 --- [           main] c.example.demo.service.EmailServiceTest  : Thymeleaf:	287
2018-11-19 00:36:09.616  INFO 7167 --- [           main] c.example.demo.service.EmailServiceTest  : <!DOCTYPE html>
<!-- 使用xmlns声明为thymeleaf模板 -->
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>邮件模板</title>
</head>
<body>
    <p>您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!</p>
</body>
</html>
2018-11-19 00:36:09.622  INFO 7167 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

#No.4
2018-11-19 00:36:50.106  INFO 7171 --- [           main] c.example.demo.service.EmailServiceTest  : Thymeleaf:	366
2018-11-19 00:36:50.106  INFO 7171 --- [           main] c.example.demo.service.EmailServiceTest  : <!DOCTYPE html>
<!-- 使用xmlns声明为thymeleaf模板 -->
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>邮件模板</title>
</head>
<body>
    <p>您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!</p>
</body>
</html>
2018-11-19 00:36:50.113  INFO 7171 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

#No.5
2018-11-19 00:37:10.615  INFO 7173 --- [           main] c.example.demo.service.EmailServiceTest  : Thymeleaf:	358
2018-11-19 00:37:10.615  INFO 7173 --- [           main] c.example.demo.service.EmailServiceTest  : <!DOCTYPE html>
<!-- 使用xmlns声明为thymeleaf模板 -->
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>邮件模板</title>
</head>
<body>
    <p>您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!</p>
</body>
</html>
2018-11-19 00:37:10.620  INFO 7173 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
2.Freemarker模板[只列举5次]
#No.1
2018-11-19 00:38:02.567  INFO 7183 --- [           main] c.example.demo.service.EmailServiceTest  : FreeMarker:	85
2018-11-19 00:38:02.567  INFO 7183 --- [           main] c.example.demo.service.EmailServiceTest  : <!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>邮件模板</title>
</head>
<body>
    您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!
</body>
</html>
2018-11-19 00:38:02.573  INFO 7183 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

#No.2
2018-11-19 00:38:22.807  INFO 7185 --- [           main] c.example.demo.service.EmailServiceTest  : FreeMarker:	77
2018-11-19 00:38:22.807  INFO 7185 --- [           main] c.example.demo.service.EmailServiceTest  : <!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>邮件模板</title>
</head>
<body>
    您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!
</body>
</html>
2018-11-19 00:38:22.818  INFO 7185 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

#No.3
2018-11-19 00:38:41.751  INFO 7187 --- [           main] c.example.demo.service.EmailServiceTest  : FreeMarker:	75
2018-11-19 00:38:41.751  INFO 7187 --- [           main] c.example.demo.service.EmailServiceTest  : <!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>邮件模板</title>
</head>
<body>
    您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!
</body>
</html>
2018-11-19 00:38:41.758  INFO 7187 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

#No.4
2018-11-19 00:39:07.605  INFO 7189 --- [           main] c.example.demo.service.EmailServiceTest  : FreeMarker:	81
2018-11-19 00:39:07.605  INFO 7189 --- [           main] c.example.demo.service.EmailServiceTest  : <!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>邮件模板</title>
</head>
<body>
    您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!
</body>
</html>
2018-11-19 00:39:07.613  INFO 7189 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

#No.5
2018-11-19 00:39:27.704  INFO 7191 --- [           main] c.example.demo.service.EmailServiceTest  : FreeMarker:	70
2018-11-19 00:39:27.705  INFO 7191 --- [           main] c.example.demo.service.EmailServiceTest  : <!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>邮件模板</title>
</head>
<body>
    您好,感谢您的注册,这是一封验证邮件,请点击下面的连接完成注册,感谢您的支持!
</body>
</html>
2018-11-19 00:39:27.711  INFO 7191 --- [       Thread-2] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
3.结论
  • 经运行结果可知,在模板生成方面Thymeleaf耗时200-300ms不等,而Freemarker耗时在100ms内,建议优先考虑Freemarker作为邮件模板
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值