首先明确要求:

1、数据库里存储的是带有标签的,例如:(之所以存储带标签的,是因为可以直接copy出来用html打开进行查看)
2、邮件模板页面编辑展示:(页面富文本编辑器编辑的格式)

3、发送邮件接收效果展示:

---------------------------------实现过程------------------------

Controller:(在controller中调用这个方法,该方法可写在controller最下面)

        [HttpGet][UserAuthorizeAttribute]public ActionResult Edit(int? id){//根据id获取对象objreturn View(obj);//直接返回该对象}[HttpPost][ValidateAntiForgeryToken][UserAuthorizeAttribute]public ActionResult Edit(EditEmailTemplate e_EamilTemplate, int? id){try{//根据id获取编辑对象 sysEmail sysEmail.Subject = e_EamilTemplate.Subject;sysEmail.Body = StringToLabel(e_EamilTemplate.Body);//这里的方法在controller的最下面有定义db.SaveChanges();return RedirectToAction("Edit", "EmailTemplates", new { id = id });}catch (Exception ex){return View(e_EamilTemplate);}}[HttpPost][UserAuthorizeAttribute]public ActionResult SendTestEmail(string subJect, string body, string sendToEmailAddress){try{body = "<html><head></head><body>" + StringToLabel(body) + "</body></html>";//这里必须这么做,否则邮件接收格式有问题;//下面是发送邮件过程,参考SPSmtpClient类发送邮件;return Json(1, JsonRequestBehavior.AllowGet);}catch (Exception ex){return Json(2, JsonRequestBehavior.AllowGet);}}private string StringToLabel(string body){body = body.Replace("&amp;lt;", "<").Replace("&amp;gt;", ">");//这一行可以省去body = body.Replace("&amp;", "&").Replace("&quot;", "\"");body = body.Replace("&lt;", "<").Replace("&gt;", ">");body = body.Replace("'", "'").Replace("&nbsp;", " ");return body;}

cshtml:

<div class="form-group row">@Html.LabelFor(model => model.Body, htmlAttributes: new { @class = "col-form-label col-md-2 label_required" })<div class="col-md-9 demo-section editor">@Html.TextAreaFor(model => model.Body, "kendoEditor")<!--这里使用的是kendoEditor富文本编辑器,js中已引用--></div></div>

js:

$("#sendTestEmail").click(function () {var backUrl = window.location.href;var EmailAddress = document.getElementById("testEmailAddress").value;var Subject = document.getElementById("Subject").value;var Body = document.getElementById("Body").value;backUrl = backUrl.replace("Edit/" + id, "Index");//这里的id请更具自己的方式获取到,我这里的id代表的是数据库中的key,$.ajax({type: "POST",url: "../SendTestEmail",data: {"sendToEmailAddress": EmailAddress,"subJect": Subject,"body": Body},success: function (data) {if (data == 0) {alert("Email Address error");}else if (data == 1) {alert("Send test email Successd!");window.location.href = backUrl;}else {alert("Send test email Falid!");}}})})$(function () {function escapeHTML(html) {return html.replace(/&lt;/g, "<").replace(/&gt;/g, ">")}var editor = $("#Body").kendoEditor().data("kendoEditor");//Body指的是标签的id,kendoEditor()指的是富文本编辑器var editorVal = $("#Body").val();editor.value(escapeHTML(editorVal));})

总结:

1、页面使用富文本编辑器编辑的格式在传到controller中被自动转义了两次;比如<p>标签变成了&lt;p&gt;,因此在post–>edit中调用了StringToLabel(string body)方法,然后存储带标签的到数据库中(如最上方的图一)
2、数据库中保存的是带标签的内容:<p><strong>Dear</strong>{%FirstName%} {%LastName%}:</p><p style="text-align:center;">Please use the bel</p>(上方图二),在发送邮件前,则必须使用拼接方式拼接成"<html><head></head><body>" + StringToLabel(body) + "</body></html>"形式,然后传给发送邮件方法的Body,因为这样才是一个完成的HTML;(你也可以在入库的时候,就保存拼接后的格式

说明:
1、由于项目原因,不能直接放上所有代码;(后面有时间会整理放到GitHub上,供大家使用,如果还没有放链接,那就说明我还没整理,嘻嘻嘻 )
2、是个人原创,欢迎留言讨论;转载请注明

ASP.Net邮件模板编辑与发送邮件的完美实现相关推荐

  1. java 邮件模板_Spring Boot 优雅地发送邮件

    最近在项目开发中有向使用者发送报警通知的功能,其中报警媒介就包括邮件,这篇文章就简单介绍了 Spring Boot 如何快速集成实现邮件发送. 通常在实际项目中,也有其他很多地方会用到邮件发送,比如通 ...

  2. 使用XSLT制作HTML邮件模板并发送

    之前有写过能发送邮件的小工具,基本做法就是先在代码中写死一封HTML邮件的格式,然后用适当的方法取得外部的几个值填到预设的参数里,最后把合体后的string类型邮件发出去.简单的邮件还好,当内容稍微多 ...

  3. Jenkins 邮件模板编写

    Jenkins 邮件模板编写 怎样编写一个自己的邮件模板?让你的报告看起来更加的丰富多彩. 对于不熟悉html 和 css 的同学,可以按照我介绍的方式,来编写这个页面. 首先介绍一个在线编辑html ...

  4. php替换邮件模板,修改OpenCart发送电子邮件的模板

    大多开源电子商务系统都具有发邮件的功能,如在会员注册成功后或会员成功下定单后,系统会自动向会员的邮箱里发送一封邮件,opencart当然也不例外.但和magento相比,OpenCart系统发新不能像 ...

  5. Asp.net 邮件传输(转)

    因为项目需要,我本来做的是通过密码问题找回用户忘记的密码,结果客户要邮件自动发送的那种找回密码,还要用自己的邮件服务器.那么我怎么办?还要留个邮件服务器接口,好难做啊,让我真不知所措,我上网上查了一下 ...

  6. java velocity 邮件_邮件集成java mail + 读取邮件模板

    项目做异地登录提醒功能,通过java mail发送邮件.读取邮件模板sendMail.vm文件. 1.邮件发送 import java.io.StringWriter; import java.uti ...

  7. asp.net 网站模板怎么用,就是16aspx上面下下来的模板,里面有个sln文件,其他全是文件夹的东西...

    asp.net 网站模板怎么用,就是16aspx上面下下来的模板,里面有个sln文件,其他全是文件夹的东西 .net写的程序模板一般都被写死了.那样只有通过程序改了. posted on 2017-0 ...

  8. Asp.net 邮件传输

    Asp.net 邮件传输(转) 因为项目需要,我本来做的是通过密码问题找回用户忘记的密码,结果客户要邮件自动发送的那种找回密码,还要用自己的邮件服务器.那么我怎么办?还要留个邮件服务器接口,好难做啊, ...

  9. Devise邮件模板路径

    以重置密码发送的邮件为例: devise发送邮件的模板在:[项目]/app/views/devise/mailer/reset_password_instructions.html.erb 如果此路径 ...

最新文章

  1. OpenCV(25)轮廓检测(轮廓提取、属性、近似轮廓、外接矩形和外接圆)
  2. TypeError: rectangle() got an unexpected keyword argument ‘width‘报错:
  3. Java中List接口重要实现类一ArrayList
  4. 方便的图片修改Sql代码
  5. 使用 dotnet-monitor 在 Kubernetes 中收集 .NET metrics
  6. 生成子集——二进制法
  7. Ubuntu下的文件安全删除工具
  8. C#数据库事务机制及实践(下)
  9. 这几个习惯,让我成为了高阶网络工程师。
  10. 【DP1】钢条分割详解
  11. Android Studio 连接不上华为手机
  12. 程序员有话说 | 原来你是这样的程序员:麦霸、大厨、舞林高手……
  13. HTTPS文件服务器搭建,搭建一个简易的https
  14. 飞思卡尔MC9S12系列单片机地址影射以及分页问题
  15. 调和级数近似求和公式推导(转载)
  16. 污水处理厂不仅能“喝”啤酒,还能“穿”绿衣,“吃”糖果
  17. 【Redis数据库 第1章】Redis入门、Redis下载与安装、Redis客户端、redis的数据类型
  18. 【商业分析 04 搜索引擎指标CG,DCG,NDCG】
  19. 网络空间安全专业大学排名 网络空间安全专业就业前景
  20. WEB交互界面易用性设计和验收的指导性原则

热门文章

  1. jmeter 压力测试各种值的意思
  2. Wireshark 301: Finding the busiest computers on your network
  3. 【js】异步方法同步化
  4. 阿里云CentOS7下mysql5.6安装问题总结
  5. 螺栓检测项目 螺栓检测报告河南
  6. linux 杂记 怎么解决 cuda 10.1 跑 cuda8下的代码 error
  7. java八大基本数据类型基本用法(含数据输入输出)
  8. 刘朋:不会面试的“白帽子”不是好程序员
  9. 推荐一个赚钱平台,100%能赚钱(合法 长久 稳定)
  10. dns辅服务器未响应ping,四招教你快速解决DNS服务器未响应