Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 存储邮件模板的推荐做法_C#_Email - Fatal编程技术网

C# 存储邮件模板的推荐做法

C# 存储邮件模板的推荐做法,c#,email,C#,Email,我的应用程序向用户发送通知邮件,因此我为每种类型的通知创建了一个html模板。我在模板中将类似字段的内容设置为{n},以便在发送消息时使用类似的内容: string bodyTemplate = GetBodyTemplate(); //gets the html template with {n} in it message.Body = String.Format(bodyTemplate, fieldZeroValue, fieldOneValue); 例如,模板可以包含以下内容的一部分

我的应用程序向用户发送通知邮件,因此我为每种类型的通知创建了一个html模板。我在模板中将类似字段的内容设置为{n},以便在发送消息时使用类似的内容:

string bodyTemplate = GetBodyTemplate(); //gets the html template with {n} in it
message.Body = String.Format(bodyTemplate, fieldZeroValue, fieldOneValue);
例如,模板可以包含以下内容的一部分:

<td style="vertical-align:middle;padding:0.5em 0.5em 0.5em 0.5em;">
    <a href="www.mypage1az.com\SomePage.aspx?Id={0}">Go to page</a>
</td> 
我的问题是:我应该在哪里存储带有html模板的很长字符串? 我不想连接到数据库获取它们,将它们存储在字符串常量中看起来很糟糕


请告诉我存储这些字符串的推荐做法。

我创建文本文件并将模板存储在项目中。如果没有太多,您可以将它们构建到程序集中,并从资源中获取它们。如果有很多,我会指向包含这些文件的目录,并使用字符串读取器来选择文件名。

前几天我听到了一个关于是否使用#区域的争论。“支持地区”的人说,“但我想隐藏丑陋的代码”,而“反对地区”的人说“如果它如此丑陋,你就不应该写它。”

看到你从丑陋的常量中闻到了代码的味道,我笑了

把它放在db里的厌恶是什么?这是频繁获得的成本吗?如果是这样,那么可能会缓存它,并以合理的间隔从数据库中重新提取。这样,您就可以保持添加或更改模板的灵活性,而不必每次都点击数据库


如果常数真的起作用,而你大喊大叫说它们很丑,那么就用一个#区域来隐藏它们:)

是的,区域并不是用来做这个的,我同意。关于数据库,我不会把模板在那里,即使那里没有连接成本;这就像在那里存储每个标签的文本一样。想想模板的维护过程:这项任务与数据库无关。是的,我是在开玩笑说区域。。。我觉得那张笑脸就够了。我不同意他们不应该属于db。。。如果我有一个工作者角色或某个正在获取需要发送的排队电子邮件请求列表(从数据库中),那么当我需要发送的电子邮件的所有其他内容都在数据库中时,为什么我要返回到平面文件中呢。。。我现在不得不打那个数据库调用并读取文件。如果您使用的是无模式数据库或消息队列系统,我将强调这一点,但如果您使用的是无模式数据库或消息队列系统,则我仍然坚持使用w/db。我想我的英语仍然是baed,我同意您关于区域问题的看法。关于数据库,如果您有很多模板,这是一个方法,但是由于我只有三个模板将它们存储为资源,对我非常有用。非常感谢您的回答和评论,来自哥伦比亚波哥大的问候:啊,对不起,错过了只有三个。。。我同意你。。。在周末,我想,通常在我玩的域空间中,我的客户需要定期查看、修改或添加新模板,因此我意识到我已经转向基于db的结构,我可以将一些管理屏幕包装起来。。。我同意平面文件模板是您在这种情况下的最佳选择!我认为这是有道理的。我已经在实现它了,谢谢和+1。我将等待一段时间,看看是否有其他一些关于如何管理这个问题的想法。
message.Body = String.Format(bodyTemplate, IdValue.ToString());