3

为多语言 MVC 网站存储 HTML 和文本电子邮件模板的最佳选择是什么?

  • 资源(EN/PT/FR 每种语言都有一个资源 - 它仍然将语言与服务层区分开来?)
  • 数据库(每种语言一列)
  • HtML 文件 - 每种语言一个文件(file-PT.html、file-EN.html)
  • 模板.tt

目标是尽可能快地发送电子邮件,以减少用户等待的延迟。

我还认为在服务层中发送比在 Web 层中发送要好得多。

由于链接是绝对的,我认为视图的需求不是很有用,但是作为邮政的解决方案是一种选择吗?或者只是简单地从数据库或文件中获取 HTML 字符串,用自定义值替换字符串标签并发送到 IIS SMTP 以处理队列?

谢谢。

4

3 回答 3

1

在我的项目中,我将模板存储在 .cshtml 文件的服务层中以突出显示语法。我使用每种文化的文件,即 TemplateName.[en].cshtml。我使用Razor 引擎来渲染模板。完美运行。

于 2013-03-21T20:33:26.107 回答
0

如果您使用云或任何分布式环境来托管您的应用程序。那么最好的想法是使用服务层来发送数据。因此,您可以使用队列将工作委托给发送节点。它会提高你的表现。关于模板的来源,您需要考虑如何对模板的格式更改做出反应。我认为最好使用数据库并将它们缓存在服务端。

于 2013-03-23T21:18:31.580 回答
0

我会为您提供将电子邮件模板存储在具有以下表结构的数据库中:

CREATE TABLE emailTemplates (
    id INT IDENTITY(1, 1),
    body VARCHAR(max),
    title VARCHAR(max),
    lcid INT,
    /*and maybe tmplType INT if you have different template types*/
)

这将允许您简单地选择模板传递Thread.CurrentThread.CurrentCulture.LCID(甚至任何所需的 culure id)[和 tmplType] 作为参数 [s] 来查找所需的模板。您还可以使用管理界面(如果有的话)编辑和创建新模板或将其插入数据库,而无需更改任何代码并将其重新部署到服务器。当然,您可以将模板表映射到一些List<your_template_class>并将其存储在 Cashe 中,这样您就不需要每次都将其从 db 中拉出。

于 2013-03-19T13:20:12.657 回答