Saya memiliki kode ini:
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);
}
}
Saya memiliki file templateemail.html di bawah direktori /templates/. ketika saya meluncurkan metode pengiriman email, saya memiliki pengecualian ini:
org.thymeleaf.exceptions.TemplateInputException: Error resolving template "templateemail.html", template might not exist or might not be accessible by any of the configured Template Resolvers
Saya tidak tahu apakah itu karena templateEngine tidak dapat menemukan file saya (saya mencoba bahkan dengan jalur absolut tomcat dan direktori /bin tetapi tidak mungkin) atau saya belum mengkonfigurasi Template Resolver yang tepat. Terima kasih banyak atas bantuan Anda. I
Perhatikan perilaku lintas platform yang dapat terjadi: pada Windows template CamelCase.html telah diselesaikan, tetapi tidak pada Ubuntu linux! Di sana saya harus mengganti namanya menjadi camelcase.html, semua karakter dalam huruf kecil
Saya memiliki masalah yang sama baru-baru ini. Masalah saya adalah bahwa templat saya memiliki referensi ke templat lain yang dimulai dengan /
.
Sebagai contoh:
<html ... th:include="/internal/layout-normal :: page"> <-- gagal
<html ... th:include="internal/layout-normal :: page"> <-- berhasil
Kedua varian bekerja tanpa masalah ketika saya menjalankan aplikasi dari IntelliJ. Namun, ketika dipaketkan dan dijalankan melalui java -jar
baris pertama gagal.
Menghapus /
menyelesaikan masalah bagi saya