我需要在预订后向客户发送确认电子邮件。这将是美学的HTML电子邮件。
电子邮件将包含用户输入的数据。
我已经查看了如何发送电子邮件的各种指南。
但是我需要关于如何构建 HTML电子邮件的一些指示。我正在考虑 jatl ,因为它是在另外的帖子中提到的。但不确定这是否是最佳方式。
谢谢! :)
答案 0 :(得分:3)
听起来您想要一个模板电子邮件,您可以重复使用,随时填充用户名等(当您发送电子邮件时)。我建议您查看http://www.stringtemplate.org/
字符串模板为我创造奇迹。
答案 1 :(得分:2)
我建议你使用速度模板。您可以使用Velocity Template构建HTML电子邮件模板,并使用VelocityEngine从Java代码中调用它。
您可能希望查看本文档以了解如何使用Velocity
有关详细信息,请查看此网址,了解如何将其用于电子邮件模板:
http://www.java2s.com/Code/Java/Velocity/UseVelocitytogenerateHTMLbasedemail.htm
答案 2 :(得分:2)
之前解决这个问题的方法是将JSP打印到String,然后将该String作为电子邮件的正文发送。如果您已经使用了webapp(我就是这样),这很容易。如果您不在网络应用程序中,我不推荐它。
Here's a stackoverflow answer on how to do it.以下是我使用的示例代码:
public static String generateEmailBodyAsString(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, ServletContext servletContext) throws Exception {
StringWriter stringWriter = new StringWriter();
final PrintWriter printWriter = new PrintWriter(stringWriter);
final ServletOutputStream outputStream = new ServletOutputStream() {
@Override
public void write(int b) throws IOException {
printWriter.write(b);
}
};
HttpServletResponseWrapper wrapper = new HttpServletResponseWrapper(httpServletResponse) {
@Override
public PrintWriter getWriter() throws IOException {
return printWriter;
}
@Override
public ServletOutputStream getOutputStream() throws IOException {
return outputStream;
}
};
httpServletRequest.setAttribute("youCanAccessThisAsAVariableInYourJsp", "some value"); //in your jsp refer to it as ${youCanAccessThisAsAVariableInYourJsp}
servletContext.getRequestDispatcher("/emailBody.jsp").include(httpServletRequest, wrapper);
return stringWriter.toString();
}
(注意:此代码编译但我修改了它以隐藏我的应用程序的细节,因此它可能在运行时不适合您。如果您有任何问题添加评论,我会尽力帮助)
答案 3 :(得分:1)
我之前总是使用Velocity做这种事情,但是当在Objective-C中做OSX项目时,我遇到了Mustache模板引擎。 。有一个很酷的名字,工作得很好。它几乎适用于所有语言。这是java版本:https://github.com/spullara/mustache.java
对于实际的发送部分,我推荐Spring而不是纯粹的javax.mail api(我总觉得有点令人费解 - 我想它的设计是为了灵活性而不是易用性)。 。 docs:http://static.springsource.org/spring/docs/2.0.8/reference/mail.html