C#中发送邮件,包含Html代码

C#代码:

     /// <summary>
        /// 发送邮件
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public string SendMail(HttpContext context)
        {
            try
            {
                if (!string.IsNullOrEmpty(CookiesHelper.getCookie("send_mail_limit")))
                {
                    return "-5";//每分钟只能发送一次
                }
                string email = context.Request["email"];
                if (string.IsNullOrEmpty(email) || !CommonHelper.IsValidEmail(email))
                {
                    return "-1";//传值为空
                }

                //依据模板生成发送内容
                string sendText = "";
                string tempPath = context.Server.MapPath("~/EmailTemp/ModifyPwd.txt");

                using (StreamReader sr = new StreamReader(tempPath))
                {
                   sendText = sr.ReadToEnd();
                }
                sendText = sendText.Replace("{UserName_CH}", "星辰");
                sendText = sendText.Replace("{UserName_EN}", "star");
                sendText = sendText.Replace("{VCode}", "abks");

                CommonHelper.SendEmail(email, sendText, Resource.Lang.RetrievePassword);
                CookiesHelper.setCookie("send_mail_limit", "SendMail", 1.00);
                return "1";//成功
            }
            catch (Exception)
            {
                return "-4";//异常
            }
        }

邮件模板:

亲爱的 <b>{UserName_CH}</b>,您好!
<br/>
您在本平台上提交了修改密码的请求。
<br/>
 验证码为:<b>{VCode}</b>,注意区分大小写!
 <br/>
 请按照页面提示完成密码的修改。
 <br/>
 (系统邮件,请勿回复)
<br/>
<br/>
<br/>
 Dear <b>{UserName_EN}</b> ,
 <br/>
  You have submitted a request to change the password on the platform.
  <br/>
  Verificationcode is <b>{VCode}</b> ,please note that the code is case sensitive!
  <br/>
  Enjoy your time !
  <br/>
 (Please do not reply.)

C#发送代码:

     /// <summary>
        /// 发送邮件1
        /// </summary>
        /// <param name="AcceptEmail"></param>
        /// <param name="sendText"></param>
        public static void SendEmail(string AcceptEmail, string sendText, string title)
        {
            SendSMTPEMail(mail_smtp, mail_main, mail_pwd, AcceptEmail, title, sendText);
        }
        /// <summary>
        /// 发送邮件2
        /// </summary>
        /// <param name="strSmtpServer"></param>
        /// <param name="strFrom"></param>
        /// <param name="strFromPass"></param>
        /// <param name="strto"></param>
        /// <param name="strSubject"></param>
        /// <param name="strBody"></param>
        public static void SendSMTPEMail(string strSmtpServer, string strFrom, string strFromPass, string strto, string strSubject, string strBody)
        {
            SmtpClient client = new SmtpClient(strSmtpServer);
            client.UseDefaultCredentials = false;
            client.Credentials = new System.Net.NetworkCredential(strFrom, strFromPass);
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.Port = mail_port;
            client.EnableSsl = mail_ssl == "yes";

            MailMessage message = new MailMessage(strFrom, strto, strSubject, strBody);
            message.BodyEncoding = System.Text.Encoding.UTF8;
            message.IsBodyHtml = true;
            client.Send(message);
        }

C#配置代码:

     //邮件配置
        public static string mail_smtp = System.Configuration.ConfigurationManager.AppSettings["mail_smtp"];
        public static string mail_main = System.Configuration.ConfigurationManager.AppSettings["mail_main"];
        public static string mail_pwd = System.Configuration.ConfigurationManager.AppSettings["mail_pwd"];
        public static int mail_port = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["mail_port"]);
        public static string mail_ssl = System.Configuration.ConfigurationManager.AppSettings["mail_ssl"];

web.config:

  <!--邮件配置-->
    <add key="mail_smtp" value="smtp.ym.163.com"/>
    <add key="mail_main" value="[email protected]"/>
    <add key="mail_pwd" value="xxxxxx"/>
    <add key="mail_port" value="25"/>
    <add key="mail_ssl" value="no"/>
时间: 2024-08-11 09:55:45

C#中发送邮件,包含Html代码的相关文章

MVC中提交包含HTML代码的页面处理方法(尤其是在使用kindeditor富文本编辑器的时候)

针对文本框中有HTML代码提交时,mvc的action默认会阻止提交,主要是出于安全考虑.如果有时候需求是要将HTML代码同表单一起提交,那么这时候我们可以采取以下两种办法实现: 1.给Controller的Action方法打上标记 [ValidateInput(false)](针对特定的action) 2.在web.config配置文件中<system.web>节中加入<httpRuntime requestValidationMode="2.0"/>(针对全

post 传递参数中包含 html 代码解决办法,js加密,.net解密

今天遇到一个问题,就是用post方式传递参数,程序在vs中完美调试,但是在iis中,就无法运行了,显示传递的参数获取不到,报错了,查看浏览器请求情况,错误500,服务器内部错误,当时第一想法是接收方式有问题,换了无数次接收方式,都没有效,后来在请求情况的,Response中发现,其实根本原因是由于post参数中不能包含html代码,设计到跨域攻击...,所以被禁止了. 微软给出的建议是 ASP.NET Web窗体中禁用请求验证 ,我是没成功,后来我查到其实可以用在前端用js base64加密,后

(算法)判断字符串中是否包含HelloWorld

题目: 给定某字符串,判断该字符串中是否包含HelloWorld,出现HelloWorld不一定要连续,但顺序不变,如“HeByello,ByeWorByeld”就包含“HelloWorld”. 思路: 通过i,j来遍历两个字符串str1,str2(HelloWorld),假设长度分别为m,n: 当i>m或者j>n,则不包含: 当i<m且j==n-1,且str1[i]==str2[j],则包含: 当i<m且j<n,如果str1[i]==str2[j],i++,j++;否则,i

算法题:求一个序列S中所有包含T的子序列(distinct sub sequence)

题: 给定一个序列S以及它的一个子序列T,求S的所有包含T的子序列.例: S = [1, 2, 3, 2, 4] T = [1, 2, 4] 则S的所有包含T的子序列为: [1, 2, 3, 2, 4] [1, 2, 3, 4] [1, 2, 2, 4] [1, 2, 4] 解: 首先可以拆解为两个问题: 1. 求S的所有子序列:其中又涉及到去重的问题. 2. 求S的所有子序列中包含T的子序列. 暂时先不考虑去重,看看问题1怎么解: 一.求S的子序列 单纯求一个序列的所有子序列的话,就是求序列的

Android中WebView的JavaScript代码和本地代码交互的三种方式

一.Android中WebView的漏洞分析 最近在开发过程中遇到一个问题,就是WebView使用的时候,还是需要解决之前系统(4.2之前)导致的一个漏洞,虽然现在这个系统版本用户很少了,但是也不能忽视,关于这个漏洞,这里就不多做解释了,可能有的同学早就了解了,本来想写一篇文章详细介绍一下,但是网上的知识太多了,而且都很详细,就没弄了,这里大致简单明了的说几句: 第一.漏洞产生的原因 这个漏洞导致的原因主要是因为Android中WebView中的JS访问本地方法的方式存在缺陷,我们做过交互的都知

C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?

C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?这是一个很常见的命题,以前也没有注意,今天QQ群里有人提起,于是就做了下试验,代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 5

如何高效地判断数组中是否包含某特定值

 如何检查一个未排序的数组中是否包含某个特定值,这是一个在Java中非常实用并且频繁使用的操作.另外,这也是Stack Overflow上面非常受关注的问题.在得票数最多的答案中,可以看到,检查数组中是否包含特定值可以用多种不同的方式实现,但是时间复杂度差别很大.下面,我将为大家展示各种方法及其需要花费的时间. 1.检查数组中是否包含特定值的四种不同方法 1)使用List: 1 2 3 public static boolean useList(String[] arr, String ta

Java 高效检查一个数组中是否包含某个值

如何检查一个数组(未排序)中是否包含某个特定的值?在Java中,这是一个非常有用并又很常用的操作.同时,在StackOverflow中,有时一个得票非常高的问题.在得票比较高的几个回答中,时间复杂度差别也很大. 1.不同的实现方式 使用list 1 public static boolean useList(String[] arr, String targetValue) { 2 return Arrays.asList(arr).contains(targetValue); 3 } 使用se

关于类库中EntityFramework之CodeFirst(代码优先)的操作浅析

前有ADO.NET,后有ORM模式的EntityFramework.这两种技术都实现了对数据库的访问操作.如果要说哪种技术好,就看项目架构的大小,使用者的熟练程度等等,毕竟萝卜白菜,各有所爱. 今天要记录和讨论的是项目之数据访问层中,使用EF来操作数据库,并可以自动更新数据库表的结构.闲话休提,逻辑步骤为先! 一.创建测试项目 目的:创建一个简单的带有模型层和数据访问层的控制台应用程序架构.如下图: Model:用作模型层,对应数据库中的表: DAL:数据访问层,实现对数据库的操作控制.引用Mo

YJX_Driver_024_驱动代码中C和C++代码区别

1. 驱动代码中C和C++代码区别 A.函数调用约定 B.C和C++编译方式 C.用C++方式编译驱动 D.C代码升级至C++ E.优化21课的代码 本课主要是做着两个工作:"D.C代码升级至C++"."E.优化21课的代码" [180]把 第21课 的代码复制过来 2.*.c 当文件后缀名为*.c时 编译器将会用C编译器方式编译*.cpp 当文件后缀名为*.cpp时 编译器将会用C++编译器方式编译区别: 解决办法在需要用到C方式编译的函数前加extern &qu