构建将作为电子邮件发送的HTML消息的最佳实践?(使用Java)

构建将作为电子邮件发送的HTML消息的最佳实践?(使用Java),java,Java,我需要发送一封确认电子邮件给客户,一旦他们作出了预订。这将是HTML电子邮件的美学 电子邮件将包含用户输入的数据 我已经查阅了有关如何发送电子邮件的各种指南 但是我需要一些关于如何构建HTML电子邮件的建议。我想到了另一篇文章中提到的jatl。但不确定这是否是最好的方式 谢谢!:) 听起来你想要一封可以重复使用的模板电子邮件,在发送电子邮件的过程中填充用户名等等。我建议你看看 字符串模板为我创造了奇迹。我建议您使用Velocity模板。您可以使用Velocity模板构造HTML电子邮件模板,并使

我需要发送一封确认电子邮件给客户,一旦他们作出了预订。这将是HTML电子邮件的美学

电子邮件将包含用户输入的数据

我已经查阅了有关如何发送电子邮件的各种指南

但是我需要一些关于如何构建HTML电子邮件的建议。我想到了另一篇文章中提到的jatl。但不确定这是否是最好的方式


谢谢!:)

听起来你想要一封可以重复使用的模板电子邮件,在发送电子邮件的过程中填充用户名等等。我建议你看看


字符串模板为我创造了奇迹。

我建议您使用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模板并没有使用大括号(“”)来包装参数。查看一些示例。如果我错过了什么,请告诉我。:-)