实现发送邮件动态html内容的几种思路

本文介绍了在B2B系统中如何实现发送包含动态内容的邮件,包括直接代码拼接、模板文件替换、用户控件、Nvelocity模板引擎等方法的优缺点分析。最终选择了Nvelocity作为实现邮件动态内容的解决方案,因其提供了较高的灵活性和易维护性。
摘要由CSDN通过智能技术生成

需求:
     一个B2B系统在注册用户申请买家,申请审批通过,订单创建,申批通过时都需要发送邮件,邮件内容需要包括一些比较正规的格式,而且其中会包含用户信息,订单信息这些动态内容。另外邮件内容以后可能会频繁调整,需要有比较灵活的定制化。

实现:
    
了解过这个需求后,大概想到了或找到了几种实现:
      1.通过代码构造邮件内容,对于其中的动态的内容,直接拼凑。优点是最直接,不会涉及其它的技术思考。缺点是需要繁琐的拼接代码,不容易直接看到显示效果,不方便发现问题,对后不调整的话不容易修改。
      2.和上面的方法类似,但是一个文件中只指定好固定的格式,把变化的部分用特定的字符代替,由程序读取这个”模板“文件内容,用具体内容替换模板文件中的指定字符即可。优点是实现比较简单,固定的部分比较容易控制和修改,但是动态读取的内容部分比较难以实现和维护。由于邮件中的内容并不是简单的几个字符,而是说整个订单信息,这其中包括单头和单身列表,而且其中会有比较特殊的格式显示控制。 所以使用这个方法也不合适。
    相关连接:http://www.c-sharpcorner.com/UploadFile/dsdaf/sendEmailTemplate09292006221150PM/sendEmailTemplate.aspx
      3.使用页面来表示需要发送的邮件内容,然后请求这个页面生成的Html直接作为发送内容。在这里可以使用用户控件代替普通的APSX文件,在用户控件的前台,我们直接象显示页面内容那样来显示我们的邮件内容: 
   

隐藏行号 复制代码 MailTemplate.ascx
  1.  <table style="border-bottom: #006699 1px solid; border-left: #006699 1px solid; font-size: 12px;
  2.         border-top: #006699 1px solid; border-right: #006699 1px solid" border="0" cellspacing="0"
  3.         cellpadding="2" width="80%">
  4.         <tbody>
  5.             <tr>
  6.                 <td>
  7.                     订单号: <%=Order.OrderNo%>
  8.                 </td>
  9.                 <td>
  10.                     客户编号:<%=Order.CardCode%>
  11.                 </td>
  12.                 <td>
  13.                     下单日期:<%=Order.CreateDate%>
  14.                 </td>
  15.             </tr>
  16.             <tr>
  17.                 <td>
  18.                     运费:<%=Order.Freight%>
  19.                 <td>
  20.                     交易币种:<%=Order.Currency%>
  21.                 </td>
  22.                 <td>
  23.                   
  24.                 </td>
  25.             </tr>
  26.             <tr>
  27.                 <td colspan="3">
  28.                     &nbsp;
  29.                 </td>
  30.             </tr>
  31.             <tr>
  32.                 <td colspan="3">
  33.                     送货地址:<%=Order.ShipAddress%>
  34.                 </td>
  35.             </tr>
  36.            
  37.              
  38.             <tr>
  39.             <td  colspan="3">
  40.             <font  color="red">具体的交货时将将由我们的客服人员与您联系协商 </font>
  41.             </td>
  42.             </tr>
  43.             <tr>
  44.           
  45.             <tr>
  46.                 <td colspan="3">
  47.                     <br>
  48.                     <table style="font-size: 12px" border="0" cellspacing="5" cellpadding="4" width="100%"
  49.                         align="center">
  50.                         <tbody>
  51.                             <tr>
  52.                                 <td>
  53.                                     <strong>产品编号</strong>
  54.                                 </td>
  55.                                 <td>
  56.                                     <strong>单位</strong>
  57.                                 </td>
  58.                                 <td width="60">
  59.                                     <strong>数量</strong>
  60.                                 </td>
  61.                                 <td width="80">
  62.                                     <strong>单价</strong>
  63.                                 </td>
  64.                             </tr>
  65.                             
  66.                             <%  foreach (SendMailTemplate.OrderItem item in Order.OrderItems)
  67.                                 { %>
  68.                             <tr>
  69.                                 <td>
  70.                                      <%=item.ItemCode%>
  71.                                 </td>
  72.                                 <td>
  73.                                         <%=item.Unit%>   
  74.                                 </td>
  75.                                 <td>
  76.                                         <%=item.Quantity%>  
  77.                                 </td>
  78.                                 <td>
  79.                                        <%=item.BasicPrice%>  
  80.                                 </td>
  81.                                   
  82.                             </tr>
  83.                           <%} %>
  84.                         </tbody>
  85.                     </table>
  86.                 
  87.                 </td>
  88.             </tr>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值