C# 如何經過mailto標籤和SMTP協議兩種方式發送郵件

  本文主要講解如何經過如現mailto標籤和SMTP協議兩種方式發送郵件,下面就直入主題html

方法1、經過mailto標籤發送郵件

  經過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         }

如圖所示:

方法2、經過SMTP協議發送郵件

核心代碼:

 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 

相關文章
相關標籤/搜索