Language agnostic 如何格式化发送电子邮件-在代码中创建或使用具有可替换值的模板?

Language agnostic 如何格式化发送电子邮件-在代码中创建或使用具有可替换值的模板?,language-agnostic,email,formatting,outgoing-mail,Language Agnostic,Email,Formatting,Outgoing Mail,为发送电子邮件创建模板的最佳做法是什么?我应该让每个类为特定的电子邮件创建html吗?我是否应该有一个带有占位符的文本模板,这些占位符由一个常用方法替换 在第一个选项中,我有一个sendEmail方法,它接受格式化的html字符串并发送电子邮件。在创建电子邮件的html表示形式后,多个类将调用此方法 在第二个选项中,我设想有许多文本文件,如 <html> <title>{emailTitle}</title> Your user name is: {u

为发送电子邮件创建模板的最佳做法是什么?我应该让每个类为特定的电子邮件创建html吗?我是否应该有一个带有占位符的文本模板,这些占位符由一个常用方法替换

在第一个选项中,我有一个sendEmail方法,它接受格式化的html字符串并发送电子邮件。在创建电子邮件的html表示形式后,多个类将调用此方法

在第二个选项中,我设想有许多文本文件,如

<html>
  <title>{emailTitle}</title>
  Your user name is: {userName}
</html>

{emailTitle}
您的用户名是:{userName}
然后是一个方法,该方法获取键的哈希映射,加载适当的文本文件,然后用值替换哈希映射中的每个键。这似乎具有更大的灵活性,因为代码不必知道要创建的html的任何信息,您可以在不更改代码的情况下更改电子邮件(仅通过删除值-添加新键需要更改代码)

格式化电子邮件的最佳做法是什么?还有另一个我应该考虑的选择吗?我必须发送四到五种不同类型的电子邮件-新注册、密码重置、订单确认等


我正在使用Java,但问题是语言不可知-有些语言可能会使模板制作更容易,但我想问的是正常的最佳实践。

模板更灵活,因为(正如您所说)您的设计师可以编辑它们,而无需触摸代码。更重要的是,它强制实现了业务逻辑和视图之间的分离

所以,这绝对是我的偏好