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

问题描述 投票:0回答:2

我试图从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

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

java spring-boot thymeleaf javamail
2个回答
0
投票

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

(可能不是最佳做法,更好的想法?)


0
投票

在上面的情况下你没有提供后缀。你没有在静态目录中有html页面进行处理。请显示您要用于可能已放入/ mail /目录的电子邮件的html页面。

谢谢,维沙尔

© www.soinside.com 2019 - 2024. All rights reserved.