2010-08-11 103 views
2

ASP.NET Webforms应用程序。ASP.NET电子邮件模式

问题:如何优雅地实现emailling?

应用程序的很多部分都需要它。这将包括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

回答

2

对于伪造的SMTP服务器进行测试,使用ndumbster。菲尔哈克有一个使用的博客文章 - http://haacked.com/archive/2006/05/30/ATestingMailServerForUnitTestingEmailFunctionality.aspx

正如你指出的电子邮件模板是太棒了。考虑为HTML和纯文本创建模板。确保你的HTML电子邮件模板使用基本的HTML作为许多不符合现代浏览器标准的电子邮件客户端(例如使用Word HTML呈现引擎的Outlook)。

Log4Net是一个很好的开始与日志记录。您还可以使用System.Diagnostics进行简单的跟踪和调试,这可以轻松写入事件日志或文件。我总是喜欢为所有日志记录设置一个包装器,以便日志框架可以很容易地换出来,如果以后因为必须具备的功能而想要将它们交换出来。从可测试性的角度来看,它也很好,因为您可以轻松地嘲笑它。

真的,只要你没有列入黑名单,你使用哪个SMTP服务器并不重要。确保你检查了SMTP服务器IP与DNSBL,这样你就知道你的SMTP主机的信誉不好。我强烈建议使用Barracuda Central的IP声誉来检查它 - http://www.barracudacentral.org/lookups。当你收件人使用grey listing时,请确保你的SMTP服务器确实支持重新发送。

对于退款,您可以设置一个POP账户让它发送回去,它可以像读取电子邮件和查找拒绝来自哪个电子邮件帐户一样简单,以及以前电子邮件的主题(应该是唯一的),以便您可以稍后或在几次反弹后将其从列表中删除。实现阅读POP看看这个主题 - Reading Email using Pop3 in C#

+0

非常感谢Mike737,jwsample和Ben。 – 2010-08-11 07:39:52

0

至于收到的消息,我曾与hMailServer这是微软Windows的免费电子邮件服务器巨大的成功。它支持常见的电子邮件协议(IMAP,SMTP和POP3),并且可以轻松地与许多现有的Web邮件系统集成。它具有灵活的基于分数的垃圾邮件防护功能,可附加到病毒扫描程序以扫描所有传入和传出的电子邮件。绝对值得一看。

对于传出的电子邮件,我喜欢我在这篇文章中所表达的模式:.NET MailMessage, LinkedResources, AlternateViews and Exceptions

1

,你可以实现自己的麻烦负荷节省在路上的最好方式不是直接从Web应用程序发送电子邮件。相反,将电子邮件(或生成电子邮件所需的信息)写入数据库,并有一个单独的过程进行邮寄。

请考虑当您的smtp服务器关闭并且您的应用尝试发送时会发生什么情况。如果您有单独的进程发送电子邮件,您可以在稍后备份时发送电子邮件。

此外,您还可以限制您发送的电子邮件。如果您最终得到了您手上的下一件大事®,您将很高兴您现在能够优先处理您的传出邮件或批量发送邮件列表,而不会在网站流量的高点压坏您的smtp服务器。

如果您正在处理反弹,只需让该流程处理即可。现在,您可以将返回的电子邮件地址记录到黑名单,并针对每封发出的电子邮件检查相同的列表。没有办法,你想不得不把所有的东西放在你的网络应用程序。

无论你想出什么东西,请考虑只写电子邮件发送到数据库,让你的应用程序开展业务。您仍然可以近乎实时地发布消息,但您可以毫不费力地将问题分离出来。