ASP.NET 2.0中寄送電子郵件

來源:互聯網
上載者:User

      ASP.NET 2.0 中寄送電子郵件變得非常簡單。寄送電子郵件的類庫主要在命名空間System.Net.Mail中,在這個命名空間中有兩個核心類是:
      · MailMessage:描述一個電子郵件訊息;它擁有From,To,Subject,Body等屬性;
      · SmtpClient:把一個指定的MailMessage執行個體發送到一個指定的SMTP伺服器。

      寄送電子郵件的一般步驟是:
      1.建立一個MailMessage對象;
      2.賦給它的From,To,Subject,Body等屬性;
      3.建立一個SmtpClient類執行個體;
      4.指定關於使用該SMTP伺服器的細節(如果它們沒有在Web.config中指定);
      5.經由SmtpClient對象的Send方法發送該MailMessage。
      
      下面的代碼示範了寄送電子郵件的過程:

string mailServerName = "smtp.126.com";  //發送郵件的SMTP伺服器
string mailFrom = "sender0624@126.com";   //寄件者郵箱(用126的郵件伺服器,就必須用126郵箱的使用者名稱)
string mailTo = "supremezone@126.com";   //收件者郵箱
string subject = "用代碼方式發送郵件";//郵件主題
string body = "這裡是郵件內文了";  //郵件內文

using (MailMessage message = new MailMessage(mailFrom, mailTo, subject, body))
{
    //SmtpClient是發送郵件的主體,這個建構函式是告知SmtpClient發送郵件時使用哪個SMTP伺服器
    SmtpClient mailClient = new SmtpClient(mailServerName);
    //將認證執行個體賦予mailClient,也就是訪問SMTP伺服器的使用者名稱和密碼
    mailClient.Credentials = new NetworkCredential("sender0624", "111111");
    //最終的發送方法
    mailClient.Send(message);
}

       上述方法是通過Code方式發送郵件的,而在Asp.Net 2.0中Framework考慮更多的是配置式,也就是通過config方式來進行應用程式的控制,減少程式參數寫入程式碼,這個配置節屬於<system.net>節下的。
        首先在Web.config檔案中增加如下配置節: <system.net>
    <!--如果是第三方smtp伺服器,需要指定userName 和 password,並根據host指定寄件者郵件地址from
        測試發現from值必須是userName值加上指定的smpt伺服器才行,而且是必須指定的
        如果是本機smtp伺服器,只需指定defaultCredentials="true"即可-->
    <mailSettings>
      <smtp deliveryMethod="Network" from ="sender0624@126.com" >
        <network host="smtp.126.com" port="25" userName="sender0624" password="111111/>
      </smtp>
    </mailSettings>
  </system.net>

        接下來是程式碼,你會發現配置方式較Code方式代碼是多麼簡潔,而且避免了寫入程式碼,Smtp資訊是從設定檔中讀取的。using (MailMessage message = new MailMessage())
{
    message.To.Add(new MailAddress("supremezone@126.com")); //收件者郵箱
    message.Subject = "通過設定檔設定發送郵件";//郵件主題
    message.Body = "這裡是郵件內文了";  //郵件內文

    SmtpClient mailClient = new SmtpClient();
    mailClient.Send(message);
}

        相比Code方式,我們發現配置方式代碼中省去了寄件者郵箱,SMTP伺服器和SMTP伺服器認證的Credentials,代碼變得相當簡潔,更為重要的是這些資訊可以在Web.config檔案中配置,這就大大增加了程式的靈活性,這是推薦採用的方式。需要說明的一點,樣本中的信箱使用者名和密碼都是真實的,理論上運行該樣本程式是可以正常發送郵件的,但發送郵件時程式會拋出異常“郵箱不可用。 伺服器響應為: Óû§±»Ëø¶¨ ”,但如果Credentials認證資訊換成我另一個126郵箱,卻能正常發送郵件了,一直沒能找到原因所在,將對SmtpClient發送郵件的穩定性做進一步的研究,也希望能得到大家的指導。        2013-01-22補充:        發送郵件出現”在郵件標題中找到無效的字元“異常,看下電腦名稱是否含中文,這個貌似是微軟的bug,解決方案是不要含中文。

        參考資料:ASP.NET 2.0中寄送電子郵件剖析之一,.Net 2.0 中的發送郵件實現小解。

        原始碼: 點擊下載完整樣本程式 (樣本路徑:/NetFromwork/SendMail.aspx)

 

   
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.