是否可以使用JSP设计通过Spring 3.0的JavaMailSender机制发送的电子邮件? JavaMailSender可能与这个问题关系不大,但其想法是利用JSP的<fmt:message key="phrasetitle"/>
国际化机制,其变量/循环JSTL代码,并允许设计人员轻松地将完整的HTML电子邮件发送给我。
此外,我可以创建一个导入此JSP的网页,以便我可以轻松地在每封电子邮件中提供一个链接,以便在他们的客户端没有正确查看html的情况下在网络上查看该电子邮件。
更新 :以下2个答案建议将Velocity用于电子邮件而不是JSP,因此看起来这是明智的选择。但是,只需对stackoverflow进行一些快速扫描即表明FreeMarker可能更适合我的需求。特别是我希望能够有一个JSP页面来反映电子邮件中发送的内容。我必须将代码从JSP转换为Velocity或FreeMarker,但FreeMarker给我的好处是我可以重用很多JSP代码,特别是taglib。这有意义吗?
答案 0 :(得分:3)
JSP不是一种模板技术。例如,Velocity是一个更好的选择。
如果你真的坚持使用JSP,那么你必须在java.net.URL
本地执行它。
InputStream input = new URL("http://localhost:8080/context/mailtemplate.jsp").openStream();
答案 1 :(得分:0)
有一些关于使用Velocity的Spring documentation会做你想做的事。我用它来处理Spring中的电子邮件,效果很好。
我通常做的是拥有一个EmailService,我从一个控制发送电子邮件的控制器调用它。其中的方法接受命令对象,该命令对象在速度模板中访问并呈现为字符串(电子邮件正文)。然后,您可以使用MailSender等发送邮件。
答案 2 :(得分:0)
虽然我同意Velocity或Freemarker可能是更好的选择,但如果您真的需要渲染JSP并将输出捕获为String(可以传递给JavaMailer),请查看我的{{3}教程。 }
它使用Spring 3,还允许使用fmt:message,fmt:formatNumber和spring:message。这个想法基本上是使用RequestDispatcher.include方法将页面呈现为MockHttpServletRequest。