Getting template text from FreeMarker in Spring app

前端 未结 1 1836
走了就别回头了
走了就别回头了 2020-12-28 17:07

In my Spring app, I\'d like to use FreeMarker to generate the text of emails that will be sent by my application. The generated text will never be returned to the view so I

相关标签:
1条回答
  • 2020-12-28 17:51

    Something like this should work

    Before the code you provided, initialize:

    MailSender mailSender = new JavaMailSenderImpl();
    SimpleMailMessage message = new SimpleMailMessage();
    

    Then, after your code, add:

    StringBuffer content = new StringBuffer();
    try {
        content.append(FreeMarkerTemplateUtils.processTemplateIntoString(
            configuration.getTemplate(templateName), templateVars));
    } catch (IOException e) {
        // handle
    } catch (TemplateException e) {
        // handle
    }
    
    message.setFrom(getMailFromName() + " <" + getMailFromAddr() + ">");
    message.setTo(getMailTo());
    if (getCcTo() != null)
        message.setCc(getCcTo());
    message.setSubject(getSubject());
    message.setText(content.toString());
    
    mailSender.send(message);
    

    Here's my applicationContext.xml:

    <bean id="freemarkerMailConfiguration"
      class="org.springframework.ui.freemarker.FreeMarkerConfigurationFactoryBean">
        <property name="templateLoaderPath" value="/WEB-INF" />
    </bean>
    <bean id="yourEmailServiceClass" class="YourEmailServiceClass">
        <property name="mailSender" ref="mailSender" />
        <property name="freemarkerMailConfiguration" ref="freemarkerMailConfiguration" />
        <property name="freemarkerTemplate" value="email.ftl" />
        <property name="mailFromName" value="John Q. Programmer" />
        <property name="mailFromAddr" value="john.q.programmer@mail.com" />
        <property name="subject" value="Email Subject" />
    </bean>
    

    And your caching question...

    I've only seen a bean property 'cache' in a 'viewResolver' bean, which you said you won't be using.

    See also: Chapter 14. Integrating view technologies

    0 讨论(0)
提交回复
热议问题