zoukankan      html  css  js  c++  java
  • [置顶]C# 邮件发送方法【webMail方式】

    在C#中发送邮件的方式有2种,一种是使用webmail方式进行发送,另外一种就是采用netmail发送的方式,在采用这2种方式发送邮件时,如果采用公用的邮件服务器(如126邮件服务器,Sina的邮件服务器)都是需要授权认证才能够发送,如果是采用Gmail的话,还会有每天发送邮件的数量等限制。这2种方式是经过我测试通过了的代码,只需要将邮件的用户名和密码修改成自己的即可,同时也可以修改邮件服务器,改成自己配置的邮件服务器。

    /// <summary>
        /// 发送Email(带验证,采用微软新推荐的方式)
        /// </summary>
        /// <param name="strTo">收件Email</param>
        /// <param name="strCc">抄送Email</param>
        /// <param name="strSubject">标题</param>
        /// <param name="strBody">内容</param>
        /// <param name="UserName">邮箱验证帐号(与web.config里配置的帐号要一样)</param>
        /// <param name="from">发信人邮箱,要与UserName对应</param>
        /// <param name="strErrorMsg">错误消息</param>
        /// <returns></returns>
        public static bool WebSendEmail(string strTo, string strCc, string strSubject, string strBody, ref string strErrorMsg)
        {
            System.Web.Mail.MailMessage message = new System.Web.Mail.MailMessage();
            System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*");

            bool bState = false;
            string strSMTPServer = "";

            try
            {
                strSMTPServer = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["SMTP"]);
                strSMTPServer = strSMTPServer == "" ? "localhost" : strSMTPServer;

                string strFromAddr = Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["FromAddress"]);
                if (reg.IsMatch(strFromAddr))
                {
                    message.From = strFromAddr;
                }
                else
                {
                    throw new Exception("The Email Address is wrong,Please reset the Email Address in the web.config file !");
                }

                string strTemp = "";
                foreach (string str in strTo.Split(';'))
                {
                    if (reg.IsMatch(str))
                        if (!strTemp.Contains(str))
                            strTemp += str + ";";
                }

                message.Cc = "";
                foreach (string str in strCc.Split(';'))
                {
                    if (reg.IsMatch(str))
                        if (!message.Cc.Contains(str))
                            message.Cc += str + ";";
                }

                message.Subject = strSubject;
                message.BodyFormat = System.Web.Mail.MailFormat.Html;

                message.Body ="<html><body>UtilMailMessage001"+ strBody+"- success</body></html>" ;
                //下面这块是加载附件的方法
                MailAttachment attachment1 =new MailAttachment(@"d:\My Documents\test1.doc");
                MailAttachment attachment2 =new MailAttachment("d:\\Documents\\test2.doc");
                message.Attachments.Add(attachment1);
                message.Attachments.Add(attachment2);

                message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true");
                message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");

                //这里的邮箱帐号和密码一定要和下面配置文件中设置的邮箱的帐号和密码一致
                message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "xxxxxxxxx");//邮箱帐号,比如Test11@126.com帐号为:Test11
                message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "xxxxxxxx");//邮箱密码
                //这个是指明邮件服务器的端口,可以不指定
                //message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", "25");
         

                foreach (string str in strTemp.Split(';'))
                {
                    if (reg.IsMatch(str))
                    {
                        message.To = str;
                        message.BodyEncoding = System.Text.Encoding.UTF8;
                        System.Web.Mail.SmtpMail.SmtpServer = strSMTPServer;
                       
                        System.Web.Mail.SmtpMail.Send(message);
                    }
                }

                bState = true;
            }
            catch (Exception ex)
            {
                System.IO.File.AppendAllText("C:\\Mail_Log.ini", string.Format("{0:yyyy/MM/dd HH:mm:ss}\r\n{1}\r\n\r\n", DateTime.Now, ex.Message));
                bState = false;
                strErrorMsg = ex.Message;
            }

            return bState;
        }

    //测试发送邮件

    protected void btnSend_Click(object sender, EventArgs e)
        {
            try
            {
               
                Email.SendEmail("xxxxxx@163.com", "", "Test Email", "Test Send Email");
             
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }

        }

    邮件在webconfig文件中配置如下:






  • 相关阅读:
    二分图最大匹配的K&#246;nig定理及其证明
    HDOJ 2389 Rain on your Parade
    HDOJ 1083 Courses
    HDOJ 2063 过山车
    POJ 1469 COURSES
    UESTC 1817 Complete Building the Houses
    POJ 3464 ACM Computer Factory
    POJ 1459 Power Network
    HDOJ 1532 Drainage Ditches
    HDU 1017 A Mathematical Curiosity
  • 原文地址:https://www.cnblogs.com/kevinGao/p/2323356.html
Copyright © 2011-2022 走看看