2015-05-27 63 views
1

我想用thymeleaf发送电子邮件来呈现电子邮件。这是我在春天4 的applicationContext.xml配置:在WEB-INF中解析Thymeleaf模板

<bean id="thymeleafMailEngine" class="org.thymeleaf.TemplateEngine"> 
    <property name="templateResolver" ref="thymeleafMailResolver" /> 
</bean> 
<bean id="thymeleafMailResolver" class="org.thymeleaf.templateresolver.FileTemplateResolver"> 
    <property name="templateMode" value="XHTML" /> 
    <property name="prefix" value="src/main/webapp/WEB-INF/templates/" /> 
    <property name="characterEncoding" value="UTF-8" /> 
    <property name="cacheable" value="false"/> 
</bean> 
<bean id="websiteMailSender" class="com.mycompany.service.MailSenderWithAttachmentSupport"> 
    <property name="thymeleafEngine" ref="thymeleafMailEngine" /> 
    <property name="thymeleafResolver" ref="thymeleafMailResolver" /> 
</bean> 

要发送我的电子邮件,我使用:

 MimeMessage msg=mailSender.createMimeMessage(); 
     try { 
      MimeMessageHelper helper = new MimeMessageHelper(msg, true, "UTF-8"); 
      //... 
      final Context ctx = new Context(); 
      ctx.setVariables(model); //model is a Map<String,Object> 
      helper.setText(thymeleafEngine.process(template, ctx)); //line 89 
     } catch(MessagingException me) { 
      log.error("Cannot send email message"); 
     } 

它产生这种异常:

org.thymeleaf。 exceptions.TemplateInputException:解析 模板“my_template.html”时出错,模板可能不存在或可能不是 可访问b y任何已配置的模板解析器 org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:246) at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1104)at org.thymeleaf.TemplateEngine.process(TemplateEngine的.java:1060)在 org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011)处 org.thymeleaf.TemplateEngine.process org.thymeleaf.TemplateEngine.process(TemplateEngine.java:924)(TemplateEngine.java :898)在 com.mycompany.service.MailSenderWithAttachmentSupport.send(MailSenderWithAttachmentSupport.java:89)

+0

您正在使用错误的模板解析器。使用servlet上下文一个... –

+0

但我不会提供HTTP请求/响应,这是不合逻辑的 – Athanor

+0

它没有什么可做的,你要返回它必须做什么用于查找。否则,请将它们移动到其他位置,然后使用“ClassPathTemplateResolver”。 –

回答

0

我只是找到了一个解决方案:

<bean id="thymeleafMailResolver" class="org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver"> 
    <property name="templateMode" value="XHTML" /> 
    <property name="prefix" value="/WEB-INF/templates/" /> 
    <property name="characterEncoding" value="UTF-8" /> 
    <property name="cacheable" value="false"/> 
</bean> 
相关问题