多语言电子邮件模板在服务层与队列管理

本文关键字:队列 管理 服务 语言 电子邮件 | 更新日期: 2023-09-27 18:03:33

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

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

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

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

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

谢谢。

多语言电子邮件模板在服务层与队列管理

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

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

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(甚至任何所需的区域性id)[和tmplType]作为参数[s]来找到所需的模板。此外,您还可以使用管理界面(如果有的话)编辑和创建新的模板,或者将其插入数据库,而无需更改任何代码并将其重新部署到服务器。当然,您可以将模板表映射到某些List<your_template_class>并将其存储在现金中,因此您不需要每次都将其从db中取出。

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