Thymeleaf TemplateEngine 无法处理远程服务器上的模板

Thymeleaf TemplateEngine unable to process templates on remote server

我正在尝试使用 Thymeleaf 从 SpringBoot 应用程序发送电子邮件。使用以下方法在本地处理模板:

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

有没有人对此有任何想法?任何帮助将不胜感激!

对纯文本 /mail/ 进行硬编码是问题所在。使用了 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);

(可能不是最佳实践,有更好的想法吗?)

您没有在上面提供后缀case.Don静态目录中是否有html 个页面需要处理。 请显示您想要用于电子邮件的 html 页面,您可能已将其放入 /mail/ 目录。

谢谢, 维沙

执行与@matgr 相同的操作,但不要忘记将空字符串传递给 templateEngine.proccess 方法,如下所示。

return templateEngine.process("", context);