I have a working WebApp based on Spring Boot (latest version 1.1.5.RELEASE) and Thymeleaf.
Now I would like to add functionality to send emails and use Thymeleaf as a template engine.
In pom.xml, I add:
<dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-mail</artifactId> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> <dependency> <groupId>javax.activation</groupId> <artifactId>activation</artifactId> <version>1.1.1</version> </dependency>
After this lesson: http://www.thymeleaf.org/doc/articles/springmail.html
I got the full (without XML) Java configuration as follows:
@Configuration public ThymeleafReplaceConfigurator { @Bean public JavaMailSender getJavaMailSenderImpl(){ JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl(); Properties props = new Properties(); javaMailSender.setJavaMailProperties(props); return javaMailSender; } @Bean public ClassLoaderTemplateResolver emailTemplateResolver(){ ClassLoaderTemplateResolver emailTemplateResolver = new ClassLoaderTemplateResolver(); emailTemplateResolver.setPrefix("/mails/"); emailTemplateResolver.setSuffix(".html"); emailTemplateResolver.setTemplateMode("HTML5"); emailTemplateResolver.setCharacterEncoding("UTF-8"); emailTemplateResolver.setOrder(1); return emailTemplateResolver; } @Bean public ServletContextTemplateResolver defaultWebTemplateResolver(){ ServletContextTemplateResolver webTemplateResolver = new ServletContextTemplateResolver(); webTemplateResolver.setPrefix("/templates/"); webTemplateResolver.setSuffix(".html"); webTemplateResolver.setTemplateMode("HTML5"); webTemplateResolver.setCharacterEncoding("UTF-8"); webTemplateResolver.setOrder(2); return webTemplateResolver; } @Bean public SpringTemplateEngine templateEngine(){ SpringTemplateEngine templateEngine = new SpringTemplateEngine(); templateEngine.setTemplateResolver(emailTemplateResolver()); templateEngine.setTemplateResolver(defaultWebTemplateResolver()); return templateEngine; } @Bean public ThymeleafViewResolver thymeleafViewResolver() { ThymeleafViewResolver thymeleafViewResolver = new ThymeleafViewResolver(); thymeleafViewResolver.setTemplateEngine(templateEngine()); thymeleafViewResolver.setCharacterEncoding("UTF-8"); return thymeleafViewResolver; } }
The folder and file tree looks like this:
src main resources templates login.html error.html mails exampleMail.html
But that does not work. The application starts correctly, but access to pages (which works without this configuration) throws an exception, for example:
Request processing error; The nested exception is org.thymeleaf.exceptions.TemplateInputException: error resolving the login template, the template may not exist or may not be available for any of the configured template converters.
I tried to put different prefixes in webTemplateResolver.setPrefix, but to no avail.
I also noticed an error message in an earlier version of Thymeleaf causing this, but it looks like it has been fixed and I have a newer version.
Does anyone see an error in this configuration?
source share