需求:
一个B2B系统在注册用户申请买家,申请审批通过,订单创建,申批通过时都需要发送邮件,邮件内容需要包括一些比较正规的格式,而且其中会包含用户信息,订单信息这些动态内容。另外邮件内容以后可能会频繁调整,需要有比较灵活的定制化。
实现:
了解过这个需求后,大概想到了或找到了几种实现:
1.通过代码构造邮件内容,对于其中的动态的内容,直接拼凑。优点是最直接,不会涉及其它的技术思考。缺点是需要繁琐的拼接代码,不容易直接看到显示效果,不方便发现问题,对后不调整的话不容易修改。
2.和上面的方法类似,但是一个文件中只指定好固定的格式,把变化的部分用特定的字符代替,由程序读取这个”模板“文件内容,用具体内容替换模板文件中的指定字符即可。优点是实现比较简单,固定的部分比较容易控制和修改,但是动态读取的内容部分比较难以实现和维护。由于邮件中的内容并不是简单的几个字符,而是说整个订单信息,这其中包括单头和单身列表,而且其中会有比较特殊的格式显示控制。 所以使用这个方法也不合适。
相关连接:http://www.c-sharpcorner.com/UploadFile/dsdaf/sendEmailTemplate09292006221150PM/sendEmailTemplate.aspx
3.使用页面来表示需要发送的邮件内容,然后请求这个页面生成的Html直接作为发送内容。在这里可以使用用户控件代替普通的APSX文件,在用户控件的前台,我们直接象显示页面内容那样来显示我们的邮件内容:
-
<table style="border-bottom: #006699 1px solid; border-left: #006699 1px solid; font-size: 12px;
-
border-top: #006699 1px solid; border-right: #006699 1px solid" border="0" cellspacing="0"
-
cellpadding="2" width="80%">
-
<tbody>
-
<tr>
-
<td>
-
订单号: <%=Order.OrderNo%>
-
</td>
-
<td>
-
客户编号:<%=Order.CardCode%>
-
</td>
-
<td>
-
下单日期:<%=Order.CreateDate%>
-
</td>
-
</tr>
-
<tr>
-
<td>
-
运费:<%=Order.Freight%>
-
<td>
-
交易币种:<%=Order.Currency%>
-
</td>
-
<td>
-
-
</td>
-
</tr>
-
<tr>
-
<td colspan="3">
-
-
</td>
-
</tr>
-
<tr>
-
<td colspan="3">
-
送货地址:<%=Order.ShipAddress%>
-
</td>
-
</tr>
-
-
-
<tr>
-
<td colspan="3">
-
<font color="red">具体的交货时将将由我们的客服人员与您联系协商 </font>
-
</td>
-
</tr>
-
<tr>
-
-
<tr>
-
<td colspan="3">
-
<br>
-
<table style="font-size: 12px" border="0" cellspacing="5" cellpadding="4" width="100%"
-
align="center">
-
<tbody>
-
<tr>
-
<td>
-
<strong>产品编号</strong>
-
</td>
-
<td>
-
<strong>单位</strong>
-
</td>
-
<td width="60">
-
<strong>数量</strong>
-
</td>
-
<td width="80">
-
<strong>单价</strong>
-
</td>
-
</tr>
-
-
<% foreach (SendMailTemplate.OrderItem item in Order.OrderItems)
-
{ %>
-
<tr>
-
<td>
-
<%=item.ItemCode%>
-
</td>
-
<td>
-
<%=item.Unit%>
-
</td>
-
<td>
-
<%=item.Quantity%>
-
</td>
-
<td>
-
<%=item.BasicPrice%>
-
</td>
-
-
</tr>
-
<%} %>
-
</tbody>
-
</table>
-
-
</td>
-
</tr>
-