使用freemarker生成html以在电子邮件中发送,无论如何使用渲染的jsp页面?

使用Spring和java邮件发件人发送电子邮件。

无论如何我可以使用普通的jsp视图和jstl标签 – 我不想学习另一堆标签/语法?

目前我的代码如下所示:

StringBuffer content = new StringBuffer(); Configuration configuration = freeMarkerConfigurer.getConfiguration(); String templateName = "vslEmail.ftl"; Map templateVars = new HashMap(); templateVars.put("firstName", "john"); templateVars.put("surname", "doe"); try { content.append(FreeMarkerTemplateUtils.processTemplateIntoString(configuration.getTemplate(ftlName), tempalteVars)); } catch (Exception e) { // handle } // content.append("
Test data"); sendMime(defaultEmailAddress, subject, content.toString());

我更愿意引用一个jsp而不是ftl?

你可以明确地渲染一个jsp,但是你需要一个Request Object!

 request.getRequestDispatcher("/WEB-INF/mai/myMail.jsp").include(request, response); 

另请参阅此StackOverflow答案 (以及该问题的其他答案)。 它显示了一个创建(假)响应对象的示例,它允许您处理创建的html。

您可以随时触发对位于您自己的Web服务器上的JSP的请求,提交响应并将其放入您的电子邮件中。 这有点hacky,必须注意确保你不打开那些页面到外面的世界,但它会工作。