服务层中的多语言电子邮件模板,带有队列管理

时间:2013-03-12 10:31:44

标签: c# html asp.net-mvc razor html-email

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

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

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

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

由于链接是绝对的,我不认为视图的需要是非常有用的,但作为邮政选项的解决方案是什么?或者只是简单地从DB或File中获取HTML字符串,用自定义值替换String标记并发送到IIS SMTP来处理队列?

感谢。

3 个答案:

答案 0 :(得分:1)

在我的项目中,我将模板存储在.cshtml文件的服务层中,以使语法高亮显示。我使用每种文化的文件,即TemplateName。[en] .cshtml。我使用Razor engine来呈现模板。效果很好。

答案 1 :(得分: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中,因此您不必每次都将其从数据库中删除。

答案 2 :(得分:0)

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