使用SMTP服務器發送郵件 首先需要在自己的郵箱中開啟這個服務並得到授權碼如下( 這是163郵箱 ):
- 主要三個類:
SmtpClient //SMTP發郵件類
MailMessage sendmessage;//郵件類
- 發件步驟:
- 設置發件類
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();