构建将作为电子邮件发送的HTML消息的最佳实践?(使用Java)
我需要发送一封确认电子邮件给客户,一旦他们作出了预订。这将是HTML电子邮件的美学 电子邮件将包含用户输入的数据 我已经查阅了有关如何发送电子邮件的各种指南 但是我需要一些关于如何构建HTML电子邮件的建议。我想到了另一篇文章中提到的jatl。但不确定这是否是最好的方式构建将作为电子邮件发送的HTML消息的最佳实践?(使用Java),java,Java,我需要发送一封确认电子邮件给客户,一旦他们作出了预订。这将是HTML电子邮件的美学 电子邮件将包含用户输入的数据 我已经查阅了有关如何发送电子邮件的各种指南 但是我需要一些关于如何构建HTML电子邮件的建议。我想到了另一篇文章中提到的jatl。但不确定这是否是最好的方式 谢谢!:) 听起来你想要一封可以重复使用的模板电子邮件,在发送电子邮件的过程中填充用户名等等。我建议你看看 字符串模板为我创造了奇迹。我建议您使用Velocity模板。您可以使用Velocity模板构造HTML电子邮件模板,并使
谢谢!:) 听起来你想要一封可以重复使用的模板电子邮件,在发送电子邮件的过程中填充用户名等等。我建议你看看
字符串模板为我创造了奇迹。我建议您使用Velocity模板。您可以使用Velocity模板构造HTML电子邮件模板,并使用VelocityEngine从Java代码中调用它 您可能需要查看此文档以了解如何使用Velocity 有关详细信息,请查看此url,了解如何将其用于电子邮件模板:
我以前解决这个问题的方法是将JSP打印成字符串,然后将该字符串作为电子邮件正文发送。这很容易,如果你已经在一个网络应用程序(我是)。如果你不在网络应用程序中,我不推荐 下面是我使用的一些示例代码:
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();
}
(注意:这段代码可以编译,但我已经对其进行了修改,以隐藏我的应用程序的细节,因此它在运行时可能不适用于您。如果您有任何问题,请添加注释,我将尝试提供帮助)我以前一直使用Velocity进行此类操作,但在Objective-C中执行OSX项目时,我遇到了Mustach模板引擎。有一个很酷的名字,而且效果很好。几乎每种语言都有。以下是java版本:
对于实际的发送部分,我推荐Spring而不是纯javax.mail api(我总是觉得有点困惑——我想它是为灵活性而设计的,而不是为了易于使用)。文档:投票决定结束并不是一个真正的问题——“如何构建”HTML非常模糊。梦想编织者?手写?使用像Twig这样的模板库?我提供了一个使用jatl库的例子。你的环境是什么?你的应用程序是独立的吗?它是否在web服务器中运行?这对我的答案很重要(但可能对其他任何人都不重要),乍一看,那个图书馆看起来不太合适。它似乎使用<和>来包装变量。当您试图呈现HTML时,它似乎会妨碍您。如果我错了,请纠正我。我只是粗略地看了一眼。@titTYT-String模板并没有使用大括号(“”)来包装参数。查看一些示例。如果我错过了什么,请告诉我。:-)