ASP.Net邮件模板编辑与发送邮件的完美实现
首先明确要求:
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("&lt;", "<").Replace("&gt;", ">");//这一行可以省去body = body.Replace("&", "&").Replace(""", "\"");body = body.Replace("<", "<").Replace(">", ">");body = body.Replace("'", "'").Replace(" ", " ");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(/</g, "<").replace(/>/g, ">")}var editor = $("#Body").kendoEditor().data("kendoEditor");//Body指的是标签的id,kendoEditor()指的是富文本编辑器var editorVal = $("#Body").val();editor.value(escapeHTML(editorVal));})
总结:
1、页面使用富文本编辑器编辑的格式在传到controller中被自动转义了两次;比如<p>
标签变成了<p>
,因此在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邮件模板编辑与发送邮件的完美实现相关推荐
- java 邮件模板_Spring Boot 优雅地发送邮件
最近在项目开发中有向使用者发送报警通知的功能,其中报警媒介就包括邮件,这篇文章就简单介绍了 Spring Boot 如何快速集成实现邮件发送. 通常在实际项目中,也有其他很多地方会用到邮件发送,比如通 ...
- 使用XSLT制作HTML邮件模板并发送
之前有写过能发送邮件的小工具,基本做法就是先在代码中写死一封HTML邮件的格式,然后用适当的方法取得外部的几个值填到预设的参数里,最后把合体后的string类型邮件发出去.简单的邮件还好,当内容稍微多 ...
- Jenkins 邮件模板编写
Jenkins 邮件模板编写 怎样编写一个自己的邮件模板?让你的报告看起来更加的丰富多彩. 对于不熟悉html 和 css 的同学,可以按照我介绍的方式,来编写这个页面. 首先介绍一个在线编辑html ...
- php替换邮件模板,修改OpenCart发送电子邮件的模板
大多开源电子商务系统都具有发邮件的功能,如在会员注册成功后或会员成功下定单后,系统会自动向会员的邮箱里发送一封邮件,opencart当然也不例外.但和magento相比,OpenCart系统发新不能像 ...
- Asp.net 邮件传输(转)
因为项目需要,我本来做的是通过密码问题找回用户忘记的密码,结果客户要邮件自动发送的那种找回密码,还要用自己的邮件服务器.那么我怎么办?还要留个邮件服务器接口,好难做啊,让我真不知所措,我上网上查了一下 ...
- java velocity 邮件_邮件集成java mail + 读取邮件模板
项目做异地登录提醒功能,通过java mail发送邮件.读取邮件模板sendMail.vm文件. 1.邮件发送 import java.io.StringWriter; import java.uti ...
- asp.net 网站模板怎么用,就是16aspx上面下下来的模板,里面有个sln文件,其他全是文件夹的东西...
asp.net 网站模板怎么用,就是16aspx上面下下来的模板,里面有个sln文件,其他全是文件夹的东西 .net写的程序模板一般都被写死了.那样只有通过程序改了. posted on 2017-0 ...
- Asp.net 邮件传输
Asp.net 邮件传输(转) 因为项目需要,我本来做的是通过密码问题找回用户忘记的密码,结果客户要邮件自动发送的那种找回密码,还要用自己的邮件服务器.那么我怎么办?还要留个邮件服务器接口,好难做啊, ...
- Devise邮件模板路径
以重置密码发送的邮件为例: devise发送邮件的模板在:[项目]/app/views/devise/mailer/reset_password_instructions.html.erb 如果此路径 ...
最新文章
- OpenCV(25)轮廓检测(轮廓提取、属性、近似轮廓、外接矩形和外接圆)
- TypeError: rectangle() got an unexpected keyword argument ‘width‘报错:
- Java中List接口重要实现类一ArrayList
- 方便的图片修改Sql代码
- 使用 dotnet-monitor 在 Kubernetes 中收集 .NET metrics
- 生成子集——二进制法
- Ubuntu下的文件安全删除工具
- C#数据库事务机制及实践(下)
- 这几个习惯,让我成为了高阶网络工程师。
- 【DP1】钢条分割详解
- Android Studio 连接不上华为手机
- 程序员有话说 | 原来你是这样的程序员:麦霸、大厨、舞林高手……
- HTTPS文件服务器搭建,搭建一个简易的https
- 飞思卡尔MC9S12系列单片机地址影射以及分页问题
- 调和级数近似求和公式推导(转载)
- 污水处理厂不仅能“喝”啤酒,还能“穿”绿衣,“吃”糖果
- 【Redis数据库 第1章】Redis入门、Redis下载与安装、Redis客户端、redis的数据类型
- 【商业分析 04 搜索引擎指标CG,DCG,NDCG】
- 网络空间安全专业大学排名 网络空间安全专业就业前景
- WEB交互界面易用性设计和验收的指导性原则
热门文章
- jmeter 压力测试各种值的意思
- Wireshark 301: Finding the busiest computers on your network
- 【js】异步方法同步化
- 阿里云CentOS7下mysql5.6安装问题总结
- 螺栓检测项目 螺栓检测报告河南
- linux 杂记 怎么解决 cuda 10.1 跑 cuda8下的代码 error
- java八大基本数据类型基本用法(含数据输入输出)
- 刘朋:不会面试的“白帽子”不是好程序员
- 推荐一个赚钱平台,100%能赚钱(合法 长久 稳定)
- dns辅服务器未响应ping,四招教你快速解决DNS服务器未响应