使用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();
