我试图从Spring Boot应用程序使用Thymeleaf发送电子邮件。使用以下方法在本地处理模板:
public String build(MailType mailType, Map<String, Object> messageMap) {
Context context = new Context();
context.setVariables(messageMap);
return templateEngine.process("/mail/" + mailType.name(), context);
}
MailType是一个枚举,其中存储了每个模板的名称,例如NEWUSER。邮件模板存储在src / main / resources / templates / mail /中
这在本地运行时按预期发送电子邮件,但在服务器上运行时,我收到以下错误消息:
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/mail/NEWUSER], template might not exist or might not be accessible by any of the configured Template Resolvers
有没有人对此有任何想法?任何帮助将不胜感激!
硬编码纯文本/邮件/是问题所在。使用了TemplateResolver,这解决了这个问题。
context.setVariables(messageMap);
TemplateEngine templateEngine = new TemplateEngine();
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setPrefix("templates/mail/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setOrder(0);
templateEngine.setTemplateResolver(templateResolver);
(可能不是最佳做法,更好的想法?)
在上面的情况下你没有提供后缀。你没有在静态目录中有html页面进行处理。请显示您要用于可能已放入/ mail /目录的电子邮件的html页面。
谢谢,维沙尔