c# - ASP.NET 电子邮件模式

标签 c# asp.net design-patterns email

ASP.NET Webform 应用程序。

问题:如何优雅地实现电子邮件发送?

应用程序的许多部分都需要它。这将包括 HTML 电子邮件、如何处理退回邮件的解决方案等。

我可以选择使用自己的 SMTP 服务器(应用程序托管在 VPS 上),或使用托管提供商。

我也想在这里开始记录(可能是 log4net)

对图书馆使用/实现模式有什么建议吗?

编辑:http://martinnormark.com/2010/03/13/generate-html-e-mail-body-in-c-using-templates

我喜欢调试捕获 asp.net net.mail - route all emails to a different email address in debug mode

最佳答案

要使用伪造的 SMTP 服务器进行测试,请使用 ndumbster 。 Phil Haack 有一篇关于使用的博客文章 - http://haacked.com/archive/2006/05/30/ATestingMailServerForUnitTestingEmailFunctionality.aspx

正如您所指出的,电子邮件模板非常棒。考虑为 HTML 和纯文本创建模板。确保您的 HTML 电子邮件模板使用基本 HTML,因为许多电子邮件客户端不符合现代浏览器标准(例如,使用 Word HTML 渲染引擎的 Outlook)。

Log4Net 是开始日志记录的一个好起点。您还可以使用 System.Diagnostics 进行简单的跟踪和调试,可以轻松地将其写入事件日志或文件。我总是喜欢为所有日志记录提供一个包装器,这样如果您发现由于必须具备的功能而想要稍后将其交换,则可以轻松地交换日志记录框架。从可测试性的角度来看,它也很好,因为您可以轻松地模拟它。

实际上,只要不被列入黑名单,您使用哪个 SMTP 服务器并不重要。确保根据 DNSBL 检查 SMTP 服务器 IP这样您就可以知道您的 SMTP 主机是否声誉不佳。我强烈建议使用 Barracuda Central 的 IP 声誉进行检查 - http://www.barracudacentral.org/lookups 。当收件人使用 grey listing 时,还要确保您的 SMTP 服务器确实支持重新发送。 .

对于退回邮件,您可以设置一个 POP 帐户来将其发送回,这可能就像阅读电子邮件并查找拒绝的电子邮件帐户来自哪个电子邮件帐户以及上一封电子邮件的主题(应该是唯一的)一样简单以便您可以稍后再次发送或在多次退回后将其从列表中删除。要实现读取 POP,请查看此线程 - Reading Email using Pop3 in C#

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

相关文章:

java - 如何根据字符串数组中的单词出现对 map 进行排序

c# - ASP.NET HttpWebRequest POST 到站点的问题

c - 用最少的循环优化 c 中的空心菱形图案打印

c# - Silverlight UserControl Parent 在其构造函数中始终为 Null。有什么建议吗?

c# - 使用 Rhino Mocks 变干

javascript - ASP.NET 如何将 javascript 添加到动态 gridview 文本框 (ItemTemplate)

c# - 在 silverlight 中的页面上播放视频

android - "Broken OOP"或如何使用 NavigationDrawer 回调

c# - 具有计数和时间条件的缓冲区运算符

c# - 如何验证某些回​​调被异步调用(按顺序)