构建将作为电子邮件发送的HTML邮件的最佳做法? (使用Java)

时间:2013-01-24 04:58:38

标签: java

我需要在预订后向客户发送确认电子邮件。这将是美学的HTML电子邮件。

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

我已经查看了如何发送电子邮件的各种指南。

但是我需要关于如何构建 HTML电子邮件的一些指示。我正在考虑 jatl ,因为它是在另外的帖子中提到的。但不确定这是否是最佳方式。

谢谢! :)

4 个答案:

答案 0 :(得分:3)

听起来您想要一个模板电子邮件,您可以重复使用,随时填充用户名等(当您发送电子邮件时)。我建议您查看http://www.stringtemplate.org/

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

答案 1 :(得分:2)

我建议你使用速度模板。您可以使用Velocity Template构建HTML电子邮件模板,并使用VelocityEngine从Java代码中调用它。

您可能希望查看本文档以了解如何使用Velocity

http://velocity.apache.org/

有关详细信息,请查看此网址,了解如何将其用于电子邮件模板:

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