C# 實現郵件發送功能(使用SMTP)封裝類源碼


   使用SMTP服務器發送郵件  首先需要在自己的郵箱中開啟這個服務並得到授權碼如下( 這是163郵箱 ):

     

  •   主要三個類:

    SmtpClient //SMTP發郵件類
    MailMessage sendmessage;//郵件類

  •  發件步驟:
  1. 設置發件類    
smpt = new SmtpClient(smptstr);//以SMTP 事務的主機的名稱或 IP 地址創建對象
smpt.UseDefaultCredentials = true;//使用默認憑據
smpt.Credentials = new NetworkCredential(id, pwd);//憑證
smpt.EnableSsl = true; //啟用ssl,也就是安全發送

         2. 設置郵件類

 this.sendadress = new MailAddress(Sendadress);//根據地址字符串生成地址對象
 this.sendmessage = new MailMessage();
 this.sendmessage.From = sendadress;//設置郵件對象的發送地址

  3.添加收件人、郵件標題、郵件內容、郵件附件

  4.發送郵件

  • 郵件發送類(可多人發送 添加多個附件)
    public class SendEmail
    {
        NetworkCredential evidence;//發件郵箱的登陸憑證
        SmtpClient smpt;//SMTP 事務的主機的名稱或 IP 地址
        MailAddress sendadress; //發件地址對象
        MailMessage sendmessage;//郵件對象


        string emailStr = @"([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,5})+"; //郵箱正則表達式對象
        string fileStr = @"^[a-zA-Z]:(((\\(?! )[^/:*?<>\""|\\]+)+\\?)|(\\)?)\s*$";//文件路徑正則表達式對象
        /// <summary>
        /// 郵件標題
        /// </summary>
        public string Emailhead { get; set; }
        /// <summary>
        /// 郵件主體信息
        /// </summary>
        public string Emailbody { get; set; }
        /// <summary>
        /// 設置發件郵箱的相關信息
        /// </summary>
        /// <param name="Sendadress">發件地址</param>
        /// <param name="id">SMTP服務登陸賬號</param>
        /// <param name="pwd">授權碼</param>
        /// <param name="smpt">SMTP 事務的主機的名稱或 IP 地址</param>
        public SendEmail(string Sendadress, string id, string pwd, string smptstr)
        {
            if (!CheckEmailAdress(Sendadress))
                throw new Exception("錯誤的郵箱地址");
            this.sendadress = new MailAddress(Sendadress);//根據地址字符串生成地址對象

            this.sendmessage = new MailMessage();
            this.sendmessage.From = sendadress;//設置郵件對象的發送地址

            smpt = new SmtpClient(smptstr);
            smpt.UseDefaultCredentials = true;//使用默認憑據
            smpt.Credentials = new NetworkCredential(id, pwd);
            smpt.EnableSsl = true; //啟用ssl,也就是安全發送
        }
        /// <summary>
        /// 添加收件人
        /// </summary>
        /// <param name="goaladress">收件地址</param>
        /// <returns></returns>
        public bool AddGoalAdress(string goaladress)
        {
            //驗證字符串是否是有效的郵箱地址
            if (!CheckEmailAdress(goaladress))
                return false;
            sendmessage.To.Add(goaladress);
            return true;
        }
        public bool AddFile(string filepath)
        {
            Regex fileReg = new Regex(fileStr);
            //驗證字符串是否是有效的文件地址
            if (!fileReg.IsMatch(filepath) || !File.Exists(filepath))
            {
                throw new Exception("錯誤的文件地址格式或者文件不存在");
            }

            sendmessage.Attachments.Add(new Attachment(filepath.Replace('\\', '/')));
            return true;
        }
        public bool Send()
        {
            if (sendmessage.To.Count == 0)
                return false;
            try
            {
                sendmessage.Subject = Emailhead;
                sendmessage.Body = Emailbody;
                smpt.Send(sendmessage);
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
                //return false;
            }
        }
        /// <summary>
        /// 驗證字符串是否是有效的郵箱地址
        /// </summary>
        /// <param name="address">地址字符串</param>
        /// <returns></returns>
        public bool CheckEmailAdress(string address)
        {
            Regex emailReg = new Regex(emailStr);
            //驗證字符串是否是有效的郵箱地址
            return emailReg.IsMatch(address);
        }

    }
  • 調用demo
            SendEmail se = new SendEmail("c666666@163.com", "c66666", "123321", "smtp.163.com");
            se.AddGoalAdress("1101111@qq.com");
            se.AddGoalAdress("121219@qq.com");
            se.Emailbody="this  is a  test";
            se.Emailhead="test  email";
            se.AddFile(@"C:\Users\66\Desktop\demo.docx");
            se.AddFile(@"C:\Users\66\Desktop\demo2.docx");
            se.Send();    

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM