使用JSP和Spring 3.0发送电子邮件

时间:2010-12-08 20:45:04

标签: spring email jsp spring-mvc html-email

是否可以使用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。这有意义吗?

3 个答案:

答案 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。