用Asp.net高效地发送Html格式的Email(六)
我的ParsedHtmlEmailCS文件包含了SendParsedTemplate方法,它已指定的邮箱地址为string类型的参数。它通过EmailDataCS (可以参照文章的前面部分获取详细信息)的实例获取认证信息。如果认证信息存在,我创建了HtmlTemplateParserCS的实例,并通过HttpContext.Current.Server.MapPath指定采用的html模板文件,它将返回我的模版文件所在的物理路径。接下来我指定字符和他们各自的值,接下来的事情就非常简单了:正如文章前面提到的,发送Mail。
让我们看一下后台代码,了解是如何发送Mail的。
创建ParsedHtmlEmailCS 的实例,并调用SendParsedTemplate 方法,它以邮件地址(在Web窗体的Text中指定)为参数。就这些了。
进一步的加强
很明显文章的内容还有很多是可以扩充的,特别是解释器部分。这里的解释器是非常小的,没有像产品系统应该做的那样加入扩展的错误检查,更进一步,解释器可以根据指定的需求,利用.Net 框架的OO能力进行扩展。
这篇文章所采用的例子,可以改进成根据不同用户的喜好发送个性化的邮件。
这边文章采用的例子,只展示了如何从数据库获取单一的值并且将数据包含在Html格式的Email中,但是在一些场景中,我们有可能存在这样的需求,在发送的消息中包含表列信息。这个方面没有在本文中论述。
因为这篇文章旨在介绍发送html格式邮件的各种方式,它不是与安全相关的最佳实践,比如加密密码,在发送邮件之前检查用户名等。
发送html格式邮件的其他途径
SQL Server 2000/2005的用户需要注意,SQL Server提供了“通知服务”(Notification Services)可以发送html格式的邮件。这是一中不同的方式,“SQL Server通知服务”是一个非常强大的特性,它可以实现用户我在本文中实现的类似功能。
应该注意的是,也可以用 XML/XSLT 发送html格式的邮件,这些技术在本文中没有涉及。
资源
MSDN Library: information on the MailMessage Class
MSDN Library: information on the StringBuilder Class
Scott Mitchell, a well-known ASP.NET MVP and author of numerous books and articles, wrote a very insightful article on User Controls: An Extensive Examination of User Controls
MSDN Library: information on the StringWriter Class and Html32TextWriter Class
MSDN Library: information on the StreamReader Class
The ASP.NET Community Starter Kit (CSK) provides built-in functionality to send HTML formatted e-mail to multiple users. You can download the application for free at http://www.asp.net/Default.aspx?tabindex=8&tabid=47
让我们看一下后台代码,了解是如何发送Mail的。
private void SendParsedTemplate()
{
try
{
HtmlEmailCS.ParsedHtmlEmailCS Message = new HtmlEmailCS.ParsedHtmlEmailCS();
Message.SendParsedTemplate(Convert.ToString(TextboxEmailAddress.Text));
LabelMessage.Text = “The requested information has been sent to the e-mail
address specified.”;
}
catch (Exception ex)
{
LabelMessage.Text = ex.Message.ToString();
}
}
{
try
{
HtmlEmailCS.ParsedHtmlEmailCS Message = new HtmlEmailCS.ParsedHtmlEmailCS();
Message.SendParsedTemplate(Convert.ToString(TextboxEmailAddress.Text));
LabelMessage.Text = “The requested information has been sent to the e-mail
address specified.”;
}
catch (Exception ex)
{
LabelMessage.Text = ex.Message.ToString();
}
}
创建ParsedHtmlEmailCS 的实例,并调用SendParsedTemplate 方法,它以邮件地址(在Web窗体的Text中指定)为参数。就这些了。
进一步的加强
很明显文章的内容还有很多是可以扩充的,特别是解释器部分。这里的解释器是非常小的,没有像产品系统应该做的那样加入扩展的错误检查,更进一步,解释器可以根据指定的需求,利用.Net 框架的OO能力进行扩展。
这篇文章所采用的例子,可以改进成根据不同用户的喜好发送个性化的邮件。
这边文章采用的例子,只展示了如何从数据库获取单一的值并且将数据包含在Html格式的Email中,但是在一些场景中,我们有可能存在这样的需求,在发送的消息中包含表列信息。这个方面没有在本文中论述。
因为这篇文章旨在介绍发送html格式邮件的各种方式,它不是与安全相关的最佳实践,比如加密密码,在发送邮件之前检查用户名等。
发送html格式邮件的其他途径
SQL Server 2000/2005的用户需要注意,SQL Server提供了“通知服务”(Notification Services)可以发送html格式的邮件。这是一中不同的方式,“SQL Server通知服务”是一个非常强大的特性,它可以实现用户我在本文中实现的类似功能。
应该注意的是,也可以用 XML/XSLT 发送html格式的邮件,这些技术在本文中没有涉及。
资源
结论
在本文中,我讨论了如何在一个web应用中运用不同的方法生成html格式的邮件。解决方案从使用一个简单的StringBuilder附加邮件的内容到部署一个用户控件和使用解析器。部署用户控件可以使代码分离,模板解析器提供更大的程序扩展性。最后,作为一个开发者,你可以找到最适合你的商务场景的方法。