tengo este codigo:
private static final String EMAIL_INLINEIMAGE_TEMPLATE_NAME = "templateemail.html"; @Bean public TemplateEngine emailTemplateEngine() { templateEngine = new SpringTemplateEngine(); templateEngine.addTemplateResolver(this.htmlTemplateResolver()); ) templateEngine.setTemplateEngineMessageSource(this.messageSource); return templateEngine; } private static ITemplateResolver htmlTemplateResolver() { final ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver(); templateResolver.setOrder(Integer.valueOf(0)); templateResolver.setPrefix("classpath:/templates/"); templateResolver.setSuffix(".html"); templateResolver.setTemplateMode(TemplateResolver.DEFAULT_TEMPLATE_MODE); templateResolver.setCharacterEncoding("UTF-8"); templateResolver.setCacheable(false); return templateResolver; } public void sendEmail(String emailAddress, String title, String body, Locale local, String image) { if (Boolean.parseBoolean(isEmailServiceActivated)) { MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper mailMsg = new MimeMessageHelper(mimeMessage); try { mailMsg.setFrom(EMAIL_USERNAME); mailMsg.setTo(emailAddress); mailMsg.setSubject(title); // Prepare the evaluation context ctx.setLocale(local); ctx.setVariable("imageHeaderResourceName", HEADER_LOGO_IMAGE); ctx.setVariable("body", body); ctx.setVariable("imageResourceName", image); final String htmlContent = this.templateEngine.process(new ClassPathResource(EMAIL_INLINEIMAGE_TEMPLATE_NAME).getPath(), ctx); mailMsg.setText(htmlContent, true ); mailMsg.addInline(HEADER_LOGO_IMAGE, new ClassPathResource(HEADER_LOGO_IMAGE ) , PNG_MIME); mailMsg.addInline(image, new ClassPathResource(image) , PNG_MIME); } catch (MessagingException e) { e.printStackTrace(); } mailSender.send(mimeMessage); } }Tengo el archivo templateemail.html en el directorio /templates/. cuando lanzo el método de envío de correo electrónico, tengo esta excepción:
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "templateemail.html", template might not exist or might not be accessible by any of the configured Template ResolversNo sé si es porque templateEngine no puede encontrar mi archivo (intento incluso con la ruta absoluta de tomcat y el directorio / bin pero de ninguna manera) o no he configurado el Template Resolver correcto. Muchas gracias por su ayuda. yo
Ahora funciona eliminando ".html" en el nombre de la plantilla (el archivo tiene la extensión html)
private static final String EMAIL_INLINEIMAGE_TEMPLATE_NAME = "templateemail"Tenga en cuenta el comportamiento no multiplataforma que puede ocurrir: en Windows, la plantilla CamelCase.html se resolvió, ¡pero no en Ubuntu Linux! Allí tuve que renombrarlo a camelcase.html, todos los caracteres en minúsculas
Tuve el mismo problema recientemente. Mi problema era que mi plantilla tenía referencias a otras plantillas que comenzaban con / .
Por ejemplo:
<html ... th:include="/internal/layout-normal :: page"> <-- failed <html ... th:include="internal/layout-normal :: page"> <-- worked Ambas variantes funcionaron sin problemas cuando ejecuté la aplicación desde IntelliJ. Sin embargo, cuando se empaqueta y se ejecuta a través java -jar la primera línea falla.
Eliminar el / resolvió el problema para mí