3

这些 HTML 电子邮件的模板都是相同的,但只有不同的变量,比如名字、姓氏等。

存储我需要的最少数据,每次都加载模板并替换变量是否有意义?

另一种选择是实际创建 HTML 文件并存储对它的引用,这可能是最容易做到的,除了管理文件可能很麻烦,而且它增加了迁移、文件权限等方面的复杂性。

寻求以前做过这件事的人的意见...

目标/目的/用途:

我有一个预订引擎。当用户进行预订时,他们会收到一封由会话化预订数据生成的确认电子邮件。

此电子邮件提供“无法查看此电子邮件?请在此处查看”链接,除了纯文本视图外,该链接还提供电子邮件的 Web 视图。

除了纯文本视图之外,我还需要显示已发送的同一封电子邮件。

模板可能会发生变化,但我认为正因为如此,我应该有一个模板表并将数据映射到模板。

4

4 回答 4

0

是的,你的权利在轨道上。我做了类似的事情。所有动态/运行时变量都从@@symbol开始。

所以在数据库中你会有一个模板表。一张表用于动态/运行时变量。一张表,用于模板和动态/运行时变量之间的映射。

tblTemplate - TemplateID、TemplateValue
tblRuntimeVariables - RuntimeVariableID、VariableString、VariableSQL
tblMapping - TemplateID、RuntimeVariableID、RuntimeVariableValue

使用额外映射表的好处是,在现有更改中添加新的动态变量意味着不对现有数据库进行任何更改。只会将更多行添加到 tblMapping。

在我的情况下,我还有一个额外的列用于在 tblRuntimeVariables 中存储 SQL 语句,以防运行时变量的值是从数据库中获取的

于 2011-03-17T18:48:40.217 回答
0

这就是我要做的,因为模板布局可能会随着时间而改变,但人员信息应该保持不变。因此,将人员信息存储在数据库中并将模板从数据库中删除是有意义的。

事实上,如果您使用 Velocity(Java 中)之类的模板引擎来构建您的 HTML 电子邮件会更好……顺便说一句,非常简单。

于 2011-03-17T18:39:28.110 回答
0

一方面 cpu 比内存更贵,所以最好保存更多数据以减少计算使用的 cpu 功率。但在您的情况下,我会保存最少的数据、电子邮件或您要保存的内容,因为它允许您轻松地改造您的模板,并在应用程序的多个位置重用数据。

于 2011-03-17T18:40:10.107 回答
0

您保留了未标准化的冗余数据(尤其是由于模板)。我不建议这样做。但在评论中提到,你想用这些数据做什么很重要。

如果您只保存您需要的数据,您可以例如轻松地交换该模板并使用另一个模板。

于 2011-03-17T18:40:13.017 回答