mardi 14 avril 2015

HTML mail using Spring4 and Thymeleaf

I am trying to send a simple HTML mail using Spring 4 and Thymeleaf templates. In my java class I have:



// Prepare the evaluation context
final Context ctx = new Context(locale);
ctx.setVariable("token", token);
ctx.setVariable("serverUrl", serverUrl);

//process template
final String htmlContent = templateEngine.process("resetPassword", ctx);
templateEngine.addTemplateResolver(emailTemplateResolver);

// Prepare message using a Spring helper
final MimeMessage mimeMessage = this.javaMailSender.createMimeMessage();
MimeMessageHelper mailMessage;
try {
mailMessage = new MimeMessageHelper(mimeMessage, true, "UTF-8");
mailMessage.setTo(email);
mailMessage.setSubject("Reset password");
mailMessage.setFrom("no-reply@some.co.uk");

// Create the HTML body using Thymeleaf
mailMessage.setText(htmlContent, true);

this.javaMailSender.send(mimeMessage);
} catch (MessagingException e) {
logger.error(e.toString());
}


My template engine is org.thymeleaf.spring4.SpringTemplateEngine


I've also tried assigning a custom template engine configuration:



public ClassLoaderTemplateResolver emailTemplateResolver(){
ClassLoaderTemplateResolver emailTemplateResolver = new ClassLoaderTemplateResolver();
emailTemplateResolver.setPrefix("/templates/");
emailTemplateResolver.setSuffix(".html");
emailTemplateResolver.setTemplateMode("HTML5");
emailTemplateResolver.setCharacterEncoding("UTF-8");
emailTemplateResolver.setOrder(1);

return emailTemplateResolver;
}


And my HTML template contains blocks like this within HTML markup:



th:href="#{${serverUrl}resetPassword?token=${token}}"


I would expect serverUrl and token to evaluate to Context variables, I've set in java code, but instead I get this within my email:



??${serverUrl}resetPassword?token=${token}_en_US??


I've spent two days reading every single post on the subject and I can say, with absolute assurance, that I am firmly stuck. Any help would be highly appreciated.


Alex


Aucun commentaire:

Enregistrer un commentaire