程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#郵件發送(最坑爹的郵箱-QQ郵箱)

C#郵件發送(最坑爹的郵箱-QQ郵箱)

編輯:C#入門知識

最近工作挺清閒的,有空的時候陪妹子出去玩玩,自己看看小說,看看電影,日子過的挺歡樂的,這個星期幡然悔悟,代碼才是我的最愛,做點小東西,就寫個郵件發送程序。說的郵件發送相信工作過基本上都會用到過,用戶注冊完之後發個驗證郵件過去驗證一下,改密碼的時候郵箱驗證一下,用戶對網站體驗如何發個郵件調查一下,網站最近最熱的內容發個郵件推送一下,好吧,有點啰嗦。正文開始吧:   SMTP定義   簡單郵件傳輸協議 (Simple Mail Transfer Protocol, SMTP) 是事實上的在Internet傳輸email的標准。   SMTP是一個相對簡單的基於文本的協議。在其之上指定了一條消息的一個或多個接收者(在大多數情況下被確認是存在的),然後消息文本會被傳輸。可以很簡單地通過telnet程序來測試一個SMTP服務器。SMTP使用TCP端口25。要為一個給定的域名決定一個SMTP服務器,需要使用MX (Mail eXchange) DNS。   (摘自維基百科)   簡單的郵件發送程序   網上很多各種郵箱的發送程序,通常情況就是Gmail郵箱(比較小眾,程序員比較喜歡),網易郵箱(吐槽跟帖的最愛,還有只看不說的我),新浪郵箱(之前工作需要和新浪做接口,注冊了一個,現在已經淪為賣貨聚集地),QQ郵箱(用戶最多,分布最廣,且最坑爹的郵箱),常用的郵箱大概就是這幾種,網上也有相應的程序,大多數寫的比較亂,有個哥們寫了一個郵箱類,原創者也不知道是誰,沒弄過的可以先用這個類練個手~       復制代碼   1  public class Email   2         {   3             /// <summary>   4             /// 發送者   5             /// </summary>   6             public string mailFrom { get; set; }   7    8             /// <summary>   9             /// 收件人  10             /// </summary>  11             public string[] mailToArray { get; set; }  12   13             /// <summary>  14             /// 抄送  15             /// </summary>  16             public string[] mailCcArray { get; set; }  17   18             /// <summary>  19             /// 標題  20             /// </summary>  21             public string mailSubject { get; set; }  22   23             /// <summary>  24             /// 正文  25             /// </summary>  26             public string mailBody { get; set; }  27   28             /// <summary>  29             /// 發件人密碼  30             /// </summary>  31             public string mailPwd { get; set; }  32   33             /// <summary>  34             /// SMTP郵件服務器  35             /// </summary>  36             public string host { get; set; }  37   38             /// <summary>  39             /// 正文是否是html格式  40             /// </summary>  41             public bool isbodyHtml { get; set; }  42   43             /// <summary>  44             /// 附件  45             /// </summary>  46             public string[] attachmentsPath { get; set; }  47   48             public bool Send()  49             {  50                 //使用指定的郵件地址初始化MailAddress實例  51                 MailAddress maddr = new MailAddress(mailFrom);  52                 //初始化MailMessage實例  53                 MailMessage myMail = new MailMessage();  54   55   56                 //向收件人地址集合添加郵件地址  57                 if (mailToArray != null)  58                 {  59                     for (int i = 0; i < mailToArray.Length; i++)  60                     {  61                         myMail.To.Add(mailToArray[i].ToString());  62                     }  63                 }  64   65                 //向抄送收件人地址集合添加郵件地址  66                 if (mailCcArray != null)  67                 {  68                     for (int i = 0; i < mailCcArray.Length; i++)  69                     {  70                         myMail.CC.Add(mailCcArray[i].ToString());  71                     }  72                 }  73                 //發件人地址  74                 myMail.From = maddr;  75   76                 //電子郵件的標題  77                 myMail.Subject = mailSubject;  78   79                 //電子郵件的主題內容使用的編碼  80                 myMail.SubjectEncoding = Encoding.UTF8;  81   82                 //電子郵件正文  83                 myMail.Body = mailBody;  84   85                 //電子郵件正文的編碼  86                 myMail.BodyEncoding = Encoding.Default;  87   88                 myMail.Priority = MailPriority.High;  89   90                 myMail.IsBodyHtml = isbodyHtml;  91   92                 //在有附件的情況下添加附件  93                 try  94                 {  95                     if (attachmentsPath != null && attachmentsPath.Length > 0)  96                     {  97                         Attachment attachFile = null;  98                         foreach (string path in attachmentsPath)  99                         { 100                             attachFile = new Attachment(path); 101                             myMail.Attachments.Add(attachFile); 102                         } 103                     } 104                 } 105                 catch (Exception err) 106                 { 107                     throw new Exception("在添加附件時有錯誤:" + err); 108                 } 109  110                 SmtpClient smtp = new SmtpClient(); 111                 //指定發件人的郵件地址和密碼以驗證發件人身份 112                 smtp.Credentials = new System.Net.NetworkCredential(mailFrom, mailPwd); 113                 smtp.UseDefaultCredentials = true; 114                 smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 115                 //設置SMTP郵件服務器 116                 smtp.Host = host; 117                 // smtp.EnableSsl = true; 118                 //smtp.Port = 587; 119                 try 120                 { 121                     //將郵件發送到SMTP郵件服務器 122                     smtp.Send(myMail); 123                     return true; 124  125                 } 126                 catch (System.Net.Mail.SmtpException ex) 127                 { 128                     return false; 129                 } 130  131             } 132         } 復制代碼 上面是一個發送郵件的輔助類,功能非常全,基本上不用動手改程序:   先寫個控制台測試一下程序,發送是成功的,結果就不截圖了,如果寫到這裡都算是博客,我還不如去聽首歌,看官有興趣看下面的吧.   復制代碼  1             Email email = new Email();  2             email.mailFrom = "[email protected]";  3             email.mailPwd = "myPassword";  4             email.mailSubject = "程序員的生活";  5             email.mailBody = "很多程序員的其實非常艱苦的一個事情";  6             email.isbodyHtml = true;      7             email.host = "smtp.163.com";  8             email.mailToArray = new string[] { "[email protected]", "[email protected]" };  9             email.mailCcArray = new string[] {"[email protected]" }; 10             email.attachmentsPath = new string[] { }; 11             if (email.Send()) 12             { 13                 Console.WriteLine("郵件發送成功~"); 14                 Console.ReadKey(); 15             } 16             else 17             { 18                 Console.WriteLine("郵件發送失敗~"); 19                 Console.ReadKey(); 20             }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved