本文主要講解如何經過如現mailto標籤和SMTP協議兩種方式發送郵件,下面就直入主題html
經過mailto不是正真意義上的發送郵件,它只是會自動調用咱們本地默認的郵件服務軟件(這取決於咱們本地安裝了什麼郵件軟件,outlook,firemail等等),發送仍是須要咱們本身點擊發送才能完成。服務器
mailto標籤有不少實用的方法,好比:加入郵件的默認主題、抄送地址、暗送(密件抄送)地址,郵件內容等待.....編碼
一、爲郵件加入發件人spa
格式:mailto:發件人地址code
代碼示例orm
1 /// <summary> 2 /// sendFrom:發件人 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void btnSendEmail_ItemClick(object sender, ItemClickEventArgs e) 7 { 8 string message = string.Format("mailto:{0}", sendFrom); 9 System.Diagnostics.Process.Start(message);//調用進程啓動郵件 10 }
二、爲郵件加入默認標題htm
格式:mailto:發件人地址?subject=郵件主題blog
代碼示例進程
1 /// <summary> 2 /// sendFrom:發件人 3 /// subjetc:主題 4 /// </summary> 5 /// <param name="sender"></param> 6 /// <param name="e"></param> 7 private void btnSendEmail_ItemClick(object sender, ItemClickEventArgs e) 8 { 9 string message = string.Format("mailto:{0}?subject={1}", sendFrom, subjetc); 10 System.Diagnostics.Process.Start(message);//調用進程啓動郵件 11 }
三、爲郵件加入默認的抄送地址rem
格式:mailto:發件人地址?cc=抄送地址
代碼示例
1 /// <summary> 2 /// sendFrom:發件人 3 /// sendCC:抄送地址 4 /// </summary> 5 /// <param name="sender"></param> 6 /// <param name="e"></param> 7 private void btnSendEmail_ItemClick(object sender, ItemClickEventArgs e) 8 { 9 string message = string.Format("mailto:{0}?cc={1}", sendFrom, sendCC); 10 System.Diagnostics.Process.Start(message);//調用進程啓動郵件 11 }
四、爲郵件加入默認暗送(密件抄送)地址
格式:mailto:發件人地址?bcc=密送地址
代碼示例
1 /// <summary> 2 /// sendFrom:發件人 3 /// sendBCC:密送地址 4 /// </summary> 5 /// <param name="sender"></param> 6 /// <param name="e"></param> 7 private void btnSendEmail_ItemClick(object sender, ItemClickEventArgs e) 8 { 9 string message = string.Format("mailto:{0}?bcc={1}", sendFrom, sendBCC); 10 System.Diagnostics.Process.Start(message);//調用進程啓動郵件 11 }
五、爲郵件加入默認的內容
格式:mailto:發件人地址?body=郵件內容
代碼示例
1 /// <summary> 2 /// sendFrom:發件人 3 /// content:郵件內容 4 /// </summary> 5 /// <param name="sender"></param> 6 /// <param name="e"></param> 7 private void btnSendEmail_ItemClick(object sender, ItemClickEventArgs e) 8 { 9 string message = string.Format("mailto:{0}?body={1}", sendFrom, content); 10 System.Diagnostics.Process.Start(message);//調用進程啓動郵件 11 }
六、多個郵件地址
格式:mailto:發件人地址1,發件地址2,發件地址3(以逗號分隔)
七、綜合型的:加入默認抄送地址,標題,內容
格式:mailto:發件人地址1,發件人地址2?cc=抄送地址&bcc=密送地址&subject=主題&body=郵件內容
代碼示例
1 /// <summary> 2 /// sendFrom:發件人 3 /// sendCC:抄送 4 /// subjetc:密送 5 /// subjetc:主題 6 /// content:郵件內容 7 /// </summary> 8 /// <param name="sender"></param> 9 /// <param name="e"></param> 10 private void btnSendEmail_ItemClick(object sender, ItemClickEventArgs e) 11 { 12 string message = string.Format("mailto:{0}?cc={1}&bcc={2}&subject={3}&body={4}", sendFrom, sendCC, 13 sendBCC, subjetc, content); 14 System.Diagnostics.Process.Start(message);//調用進程啓動郵件 15 }
如圖所示:
核心代碼:
1 /// <summary> 2 /// 發送郵件 3 /// </summary> 4 /// <param name="userEmailAddress">發件人地址</param> 5 /// <param name="userName">發件人姓名(可爲空)</param> 6 /// <param name="password">密碼</param> 7 /// <param name="host">郵件服務器地址</param> 8 /// <param name="port"></param> 9 /// <param name="sendToList">收件人(多個電子郵件地址之間必須用逗號字符(「,」)分隔)</param> 10 /// <param name="sendCCList">抄送人(多個電子郵件地址之間必須用逗號字符(「,」)分隔)</param> 11 /// <param name="subject">主題</param> 12 /// <param name="body">內容</param> 13 /// <param name="attachmentsPath">附件路徑</param> 14 /// <param name="errorMessage">錯誤信息</param> 15 public static bool SendMessage(string userEmailAddress, string userName, string password, string host, int port, 16 string[] sendToList, string[] sendCCList, string subject, string body, string[] attachmentsPath, out string errorMessage) 17 { 18 errorMessage = string.Empty; 19 SmtpClient client = new SmtpClient(); 20 client.Credentials = new System.Net.NetworkCredential(userEmailAddress, password);//用戶名、密碼 21 client.DeliveryMethod = SmtpDeliveryMethod.Network;//指定電子郵件發送方式 22 client.Host = host;//郵件服務器 23 client.Port = port;//端口號 非SSL方式,默認端口號爲:25 24 client.UseDefaultCredentials = true; 25 26 MailMessage msg = new MailMessage(); 27 //加發件人 28 foreach (string send in sendToList) 29 { 30 msg.To.Add(send); 31 } 32 //加抄送 33 foreach (string cc in sendCCList) 34 { 35 msg.To.Add(cc); 36 } 37 38 //在有附件的狀況下添加附件 39 if (attachmentsPath != null && attachmentsPath.Length > 0) 40 { 41 foreach (string path in attachmentsPath) 42 { 43 var attachFile = new Attachment(path); 44 msg.Attachments.Add(attachFile); 45 } 46 } 47 msg.From = new MailAddress(userEmailAddress, userName);//發件人地址 48 msg.Subject = subject;//郵件標題 49 msg.Body = body;//郵件內容 50 msg.BodyEncoding = System.Text.Encoding.UTF8;//郵件內容編碼 51 msg.IsBodyHtml = true;//是不是HTML郵件 52 msg.Priority = MailPriority.High;//郵件優先級 53 54 try 55 { 56 client.Send(msg); 57 return true; 58 } 59 catch (System.Net.Mail.SmtpException ex) 60 { 61 errorMessage = ex.Message; 62 return false; 63 } 64 }
如圖所示:
PS:若有疑問,請留言,未經容許,不得私自轉載,轉載請註明出處:http://www.cnblogs.com/xuliangxing/p/7987282.html