Recently was refactoring a Java Spring boot project which I bought in Codecanyon. It had an API endpoint to send a HTML verification code. The HTML was hard coded inside the Java code and couldn’t be formatted easily because of this. So I planned to use https://www.thymeleaf.org/ as the templating engine. Here is the step by step for anyone going to do similar thing using Java Sprint boot.
Step 1
Add the maven dependency for the library in pom.xml file as shown below
...........
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>
.......
Step 2
Create a Java class to generate the HTML using the template.
public class Template {
public static String getVerificationEmail(String code){
ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
resolver.setTemplateMode(TemplateMode.HTML);
resolver.setSuffix(".html");
resolver.setPrefix("templates/");
TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(resolver);
final Context context = new Context(Locale.ENGLISH);
context.setVariable("verificationCode", code);
final String html = templateEngine.process("email-verification", context);
return html;
}
}
Here I am passing a single variable called verificationCode but you can pass as many as you want. Also we refer the path “templates/” and we need to place the email templates in the directory. Also we refer to the file name “email-verification” with the extension “.html”
Step 3
Create a directory named “template” under /src/main/resources and create a file with name “email-verification.html”. The HTML can refer the variable verification code as shown below. Please note all the expressions needs to be in [[….]] so that it will be executed and replaced with actual values.
...........
............
<tr>
<td align="center" style="font-size:0px;padding:10px 25px;word-break:break-word;">
<div style="font-family:open Sans Helvetica, Arial, sans-serif;font-size:24px;font-weight:bold;line-height:1;text-align:center;color:#000000;">[[${verificationCode}]]</div>
</td>
</tr>
.............
.............
Hope this quick steps helped you in your project.