【问题标题】:Templates for emails in JavaJava 中的电子邮件模板
【发布时间】:2014-09-17 13:31:17
【问题描述】:

我们正在构建一个 Web 应用程序,该应用程序还可以根据不同的场景发送电子邮件。我正在检查用于设置邮件模板的各种选项(即邮件内容、主题)。我经历了以下选项:

  • Apache Velocity:使用它,我可以为电子邮件内容设置模板,但我如何也可以为邮件设置主题?我需要调用另一个模板来设置主题。有什么方法可以在不使用两个不同模板文件的情况下指定邮件正文和主题?
  • 数据库驱动模板:主要缺点是我们需要在这种方法中重新发明轮子。我们最终会编写一些实用程序已经可用的样板代码。

我们不需要任何高保真音响,只需要简单的模板。唯一的要求是我们应该能够根据场景发送不同主题的不同邮件。有什么建议吗?

【问题讨论】:

  • 这取决于您使用什么来发送电子邮件。您可以将包含所有标题的整个电子邮件作为模板,然后直接读取它,填写值并发送。如果您的电子邮件库允许。
  • 我很久以前就用过StringTemplatestringtemplate.org/about.html,它很容易使用。检查它是否满足您的需求。
  • 电子邮件主题总是一行。您可以采用这样的约定,即结果的第一行是主题,其余的是正文。不过,不确定这是否比使用其他文件更清晰。
  • 您可以针对不同的场景使用 freemarker 模板文件,并相应地使用。
  • 呃“重新发明轮子”是夸大其词。完成起来非常简单,因此您可以创建自己的解决方案。如果实施时间超过一个小时,我会感到惊讶。

标签: java email velocity


【解决方案1】:

我不是这方面的专家,但我使用过FreeMarker。它非常酷且快速。我认为您将能够轻松满足您的要求。

【讨论】:

    【解决方案2】:

    我过去曾研究过速度,这比重新发明轮子要好得多。

    如果你使用速度,你有三个选择:

    1. 为每个主题创建一个模板,每个正文创建一个模板
    2. 在将模板文件发送到velocity之前拆分模板文件(例如,直到“____”的所有行都是主题,其余的正文
    3. 在速度的输出上拆分输出(例如,第一行 = 主题、其余身体)

    第一个选项最容易设置,但会使您的模板数量增加一倍。第二个是最难出错的。第三个具有最佳性能特征,但您可能会不小心错过拆分条件,将整个电子邮件放在主题中或以其他方式搞砸。

    编辑:根据 nablex 的评论,我想扩展一下动机:是的,你可以从超级简单的东西开始,比如用收件人的用户名或其他东西替换“”,但很快客户总是要求更复杂的东西(“我们可以有一个包含订单项目的表格吗?”)。在不知不觉中,您已成为 Greenspunning 您自己的语言。因此,建议将那些已经被烧毁的人重新使用。

    【讨论】:

    • 我很好奇:与自定义解决方案相比,您注意到哪些优势?这似乎是一个非常简单的用例。
    【解决方案3】:

    最终实现了数据库驱动的模板。我们现在已经在 2 个表中定义了模板和占位符,以及一个在运行时读取模板并替换占位符的通用实用程序。

    【讨论】:

      猜你喜欢
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-12
      相关资源
      最近更新 更多