用Asp.net高效地发送Html格式的Email(三)
接下来我创建了MailMessage的实例,以便能发送html格式的邮件,MailMessage类在System.Web.Mail这个命名空间下,接下来的事情就很简单了,只是给必须赋值的From,To,“Subject”等属性赋值,定义BodyFormat属性为html。
接下来我准备创建信息---如果你愿意,是邮件的主体---本身。我用了System.Text下的StringBuilder。StringBuilder针对字符串连接作了性能优化,所以在这里是最佳选择。我创建了一个名为MailBody的StringBuilder的实例,并用它的Append方法把邮件的信息加到其上。注意也包含了UserData类(译注:应该是Object,对象)的属性UserData.Username和UserData.Password在我的MailBody类(StringBuilder类型)(译注:应该是Object,对象).
然后将我的StringBuilder类的内容转换成string类型并且赋值给一个string变量,这样我就能发送Mail了。接下来我指定了发送邮件的地址(SMTP服务器),以便来发送信息。
在后台文件SimpleHtmlEmail.aspx.cs里,我创建了SimpleHtmlEmailCS的实例,并调用SendSimpleHtmlEmail方法,我将这些代码放在try catch代码块中,以便能向用户提供一些反馈信息。
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
上面的方法有个与代码清晰相关的缺点:如果有大量的html代码要加到你的StringBuilder对象上,就会变得乱七八糟。让我们来看一下:表现层的代码和事务层的代码纠缠在一起看上去不那么妙。下面的一段提供了一个可行的解决方案,在那里代码是分离的。
用用户控件创建Html邮件
在你的程序中可以部署用户控件是asp.net作为一个web程序的开发平台的众多优点中的一个。用户控件在保持代码分离的同时,提供了封装的方式。另外它们是具有属性,事件等的一流.Net成员(citizens)。最好的是在这种场景下:你可以用它们发送Html格式的邮件。
最终的邮件所包含的信息将和本文前部分提到的邮件内容一样。真正不同是信息的外观。这就是邮件的样子,假定邮件是一个名为 “ABC Books”的在线书籍转售商发送的。
![](/images/cnblogs_com/farseer1215/htmlemail04.gif)
这里应该注意的最重要的事情是,我的设计是基于包含大量<tr>行的html<table>。我尽量给出专业的外观,包含头,正文,页脚等部分。让我们继续,开发部署了用户控件的解决方案。