【发布时间】:2011-01-05 23:11:58
【问题描述】:
我正在建立一个网站,我们在其中适度使用电子邮件模板。例如,我们将令牌传递到的 HTML 模板,如 {UserName}、{Email}、{NameFirst} 等。
就最佳实践而言,我正在努力将这些存储在哪里。我将首先展示我采用的方法,我很高兴听到一些专家的观点作为替代方法。
我在名为 /Templates/ 的文件夹中创建了 HTML 模板。
我在我的服务层调用一个静态方法,它接受以下参数:
- 用户名
- 用户 ID
- 电子邮件
- 模板路径(“~/模板”)
- 电子邮件主题
在服务层中,我有我的静态方法 SendUserEmail(),它使用了一个 Template 类——它接受一个路径,将它作为一个字符串加载,并有一个 AddToken() 方法。
在我的静态 SendUserEmail() 中,我根据方法签名构建令牌列表,然后发送电子邮件。
这在我的实际使用中造成了相当长的方法调用,特别是因为我从 web.config 调用“TemplatePath”和“Email Subject”。我可以创建一个方法调用比 ConfigurationManager.AppSettings 更短的实用程序,但我更担心的是我通常不会看到这么长的方法签名,我觉得这是因为我做错了什么。
这种技术非常适用于我现在拥有的电子邮件,最多使用前 3 个标记。不过未来我会有更多的代币要传入,我只是想知道采取什么方法。
我是否创建特定于需要发送的电子邮件的方法? IE。 SendNewUserRegistration()、SendMarketingMaterial(),每个参数的签名都不一样?
我正在使用 ASP.NET Membership,它可能包含我将需要的所有字段的扩展。主要有三个对象,aspnet_User、aspnet_Mebership 和 aspnet_profile。如果它全部包含在一个对象中,我就会将其传入。传入所有 3 个对象是否存在性能问题,以获得我需要的所有字段?这与仅传递 aspnet_User.UserID、aspnet_User.Email 等相比是什么?
我可以看到传入带有令牌条目的字典,但我只是想知道询问调用页面是否太多?
有没有办法将它们粘贴在它自己的名为 Templates.config 的配置文件中,该文件具有 -
之类的标签<Templates>
<EmailTemplate Name="New User Registration">
<Tokens>
<UserName>
<UserID>
<Email>
</Tokens>
<Message Subject="Hi welcome...">
Hi {UserName}...
</Message>
</EmailTemplate>
</Templates>
我想我问的主要原因是因为我很难确定责任应该在哪里,就确定要使用什么模板,以及如何传入参数。如果调用页面必须建立TokenName,TokenValue的字典,可以吗?或者该方法应该将每个作为定义的参数?这在 web.config 中看起来不合适,因为我有 2 个用于 and 的条目,感觉它应该看起来更嵌套。
谢谢。我可以使用任何客观方法的技术或建议来询问我的方法是否可行。
【问题讨论】: