c# - 电子邮件模板引擎

标签 c# asp.net email template-engine

我正准备为我正在使用的站点 (asp.net/c#) 编写一个简单的电子邮件管理器;该站点会发送各种电子邮件,例如帐户创建、新闻、一些用户操作等。因此会有一些带有占位符的电子邮件模板,例如 [$FirstName],这些模板将被实际值替换。很标准的东西。我只是想知道是否有人可以就现有代码提出建议 - 再一次,我需要一些非常简单的东西,没有很多花哨的东西,而且显然有源代码(而且是免费的)

任何想法/意见将不胜感激!

谢谢, 安德烈

最佳答案

Stack Overflow 上已经有几个线程讨论这个问题,但我最终从那里的各种建议中推出了我自己的解决方案。

我用了这个FormatWith扩展方法来处理简单的模板,然后我制作了一个基本的电子邮件基类来处理常见的任务,比如拉入适当的模板并替换所有必需的信息,以及提供 Send() 方法。

我需要发送的所有电子邮件都有自己的派生自基础的子类,并定义了它们独有的内容,例如 TemplateText、BindingData、Recipients 和 Subject。将它们分别放在自己的类中使得它们非常容易独立于应用程序的其余部分进行单元测试。

为了让您的应用程序可以使用这些电子邮件类而无需真正关心它使用的是哪一个,实现一个接口(interface)也是一个好主意,可以使用任何共享方法(我唯一关心的是 Send()),然后您的应用程序可以实例化它想要的任何电子邮件类,并以相同的方式使用它们。也许也可以使用泛型,但这是我想到的。

IEmail email = new MyEmailClass();
email.Send();

编辑:这里还有更多建议:Can I set up HTML/Email Templates with ASP.NET?

关于c# - 电子邮件模板引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2298586/

相关文章:

c# - 从 Controller 返回 Json 数据到 View ASP.NET MVC

python - 如何发送电子邮件附件?

c# - 如何获取 WatiN 图像元素的位图?

c# - WPF 选项卡控件 : How do I get the currently selected tab?

c# - 下拉列表中的第一项根本不会触发 SelectedIndexChanged

asp.net - CSS 打印 - 分页前导致表头不重复(Internet Explorer 8)

.net - 数字签名电子邮件

android - 操作将邮件发送到带有文件的 Android 11

c# - 如何让代码分析发现一个参数在被调用的方法中得到验证

c# - 使用 EntityFramework 6 和 Linq 批量更新对象列表