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

C#代码:

/// <summary>
    /// 发送邮件
    /// </summary>
    /// <param name="subject"></param>
    /// <param name="emails"></param>
    /// <param name="filePath"></param>
    public static void SendEmail(string subject, string[] emails, string filePath)
    {
        string text = "";
        string html = "您好,这是系统自动发送的邮件。请不要直接回复。";
        string sendEmailUserName = System.Configuration.ConfigurationManager.AppSettings["SmtpEmailUserName"];
        string sendEmail = System.Configuration.ConfigurationManager.AppSettings["SmtpEmailAddress"];
        string sendEmailPWD = System.Configuration.ConfigurationManager.AppSettings["SmtpEmailPassword"];
        string SmtpServer = System.Configuration.ConfigurationManager.AppSettings["SmtpServer"];
        int SmtpServerPort = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["SmtpServerPort"]);

        using (SmtpClient smtpClient = new SmtpClient())
        {
            using (MailMessage msg = new MailMessage())
            {
                msg.Subject = subject;
                msg.From = new MailAddress(sendEmail);
                foreach (var item in emails)
                {
                    msg.To.Add(new MailAddress(item));
                }
                msg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(text, null, MediaTypeNames.Text.Plain));
                msg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html));
                msg.Attachments.Add(new Attachment(filePath));

                System.Net.NetworkCredential credentials = new System.Net.NetworkCredential(sendEmailUserName, sendEmailPWD);
                smtpClient.Host = SmtpServer;
                smtpClient.Port = SmtpServerPort;
                smtpClient.Credentials = credentials;
                smtpClient.EnableSsl = false;
                smtpClient.Send(msg);
            }
        }
    }

haha

     /// <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="xxxxx@xxxxx.com"/>
    <add key="mail_pwd" value="xxxxxx"/>
    <add key="mail_port" value="25"/>
    <add key="mail_ssl" value="no"/>

使用CDO.Message发送邮件:腾讯企业邮箱有点特别,以上的方法都发送不了,最后找到这个方法可以发送。要引用一个dll,地址:C:\Windows\System32\cdosys.dll

public static void SendMailByCDO()
        {
            CDO.Message objMail = new CDO.Message();
            try
            {
                objMail.To = "xxx@qq.com";//要发送给哪个邮箱
                objMail.From = "xxx@xxx.cn";//你的邮件服务邮箱
                objMail.Subject = "这是标题";//邮件主题
                objMail.HTMLBody = "这里可以填写html内容";//邮件内容 html
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"].Value = 465;//设置端口
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserver"].Value = "smtp.exmail.qq.com";
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendemailaddress"].Value = "xxx@xxx.cn";//发送邮件账户
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpuserreplyemailaddress"].Value = "xxx@xxx.cn";//发送邮件账户
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpaccountname"].Value = "xxx@xxx.cn";//发送邮件账户
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"].Value = "xxx@xxx.cn";//发送邮件账户
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"].Value = "xxx";//发送邮件账户密码
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"].Value = 2;
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"].Value = 1;
                objMail.Configuration.Fields["http://schemas.microsoft.com/cdo/configuration/smtpusessl"].Value = "true";//是否使用ssl

                //防止中文乱码
                objMail.HTMLBodyPart.Charset = "utf-8";
                objMail.BodyPart.Charset = "utf-8";

                objMail.Configuration.Fields.Update();
                objMail.Send();
            }
            catch (Exception ex) { throw ex; }
            finally { }
            System.Runtime.InteropServices.Marshal.ReleaseComObject(objMail);
            objMail = null;
        }

System.Web.Mail:http://www.codingwhy.com/view/616.html