天天看點

net類庫中發送電子郵件的方法總結

發送電子郵件是許多需要使用者注冊的網站的通用功能,通過正規表達式我們可以過濾掉不符合電子郵件格式的輸入,但是仍沒有辦法確定使用者填寫的電子郵件位址一定是他本人真實有效的電子郵件位址,通常驗證電子郵件真實有效的辦法是:當使用者填寫的注冊資料經過網站初步格式驗證之後,使用者并不能利用此帳号登入,系統會向使用者注冊時填寫的電子郵件位址發送一封電子郵件,郵件中給出一個連結,隻有當使用者點選了這個連結之後才能登入到網站,如果使用者填寫的電子郵件位址不是真實有效的或者不是他本人的,就不會收到這封電子郵件,這樣仍然不能登入,這一步一般稱之為電子郵件激活。

在.net類庫中有兩種發送電子郵件的方式,一種是在.net2.0以下版本中的做法,一種是.net2.0以上版本的做法。下面分别介紹這兩種辦法。

一、.net1.0及.net1.1中的做法(利用CDOSYS消息元件發送電子郵件):

代碼如下:

  1.using System; 

  2.using System.Web.Mail; 

  3.

  4./// <summary> 

  5./// 說明:在.net2.0以下版本中發送電子郵件的方法示例 

  6./// 用到的類主要位于System.Web.Mail命名空間下 

  7./// 作者:周公 

  8./// 日期:2008-08-08 

 10./// </summary> 

 11.public class SendMail 

 12.{ 

 13.    public SendMail() 

 14.    { 

 15.         

 16.    } 

 17.    /// <summary> 

 18.    /// 發送郵件 

 19.    /// </summary> 

 20.    /// <param name="to">收件人郵件位址</param> 

 21.    /// <param name="from">發件人郵件位址</param> 

 22.    /// <param name="subject">郵件主題</param> 

 23.    /// <param name="body">郵件内容</param> 

 25.    /// <param name="password">登入smtp主機時用到的使用者密碼</param> 

 26.    /// <param name="smtpHost">發送郵件用到的smtp主機</param> 

 27.    public void Send(string to, string from, string subject, string body, string username, string password, string smtpHost) 

 28.    { 

 29.        MailMessage mail = new MailMessage(); 

 30.        mail.To = to;//設定收件人位址 

 31.        mail.From = from;//設定發件人位址 

 32.        mail.Subject = subject;//設定郵件主題 

 33.        mail.BodyFormat = MailFormat.Html;//設定郵件以HTML格式發送 

 34.        mail.Body = body;//設定郵件内容 

 35.        //設定發送郵件時需要身份驗證 

 39.        //設定登入SMTP主機的使用者密碼 

 41.        //設定發送郵件的SMTP主機 

 42.        SmtpMail.SmtpServer = smtpHost; 

 43.        //發送郵件,如果發送不成功會抛出異常 

 44.        SmtpMail.Send(mail); 

 45.    } 

 46.}

上面的方法底層用到了CDOSYS元件,用到的類主要是System.Web.Mail.SmtpServer和System.Web.Mail.MailMessage,這種方法已經被微軟不贊成使用了,取而代之的是.net2.0中的新增的類和方法。

二、.net2.0中的做法

代碼:

  2.using System.Net.Mail; 

  3.using System.Net; 

  4.

  5./// <summary> 

  6./// 說明:在.net2.0以上版本中發送電子郵件的方法示例 

  7./// 用到的類主要位于System.Net.Mail和System.Net命名空間下 

  8./// 作者:周公 

  9./// 日期:2008-08-08 

 11./// </summary> 

 12.public class SendMail2 

 13.{ 

 14.    public SendMail2() 

 15.    { 

 17.

 18.    /// <summary> 

 19.    /// 發送郵件 

 20.    /// </summary> 

 21.    /// <param name="to">收件人郵件位址</param> 

 22.    /// <param name="from">發件人郵件位址</param> 

 23.    /// <param name="subject">郵件主題</param> 

 24.    /// <param name="body">郵件内容</param> 

 26.    /// <param name="password">登入smtp主機時用到的使用者密碼</param> 

 27.    /// <param name="smtpHost">發送郵件用到的smtp主機</param> 

 28.    public void Send(string to, string from, string subject, string body, string userName, string password, string smtpHost) 

 29.    { 

 30.        MailAddress from = new MailAddress(from); 

 31.        MailAddress to = new MailAddress(to); 

 32.        MailMessage message = new MailMessage(from, to); 

 33.        message.Subject = subject;//設定郵件主題 

 34.        message.IsBodyHtml = true;//設定郵件正文為html格式 

 35.        message.Body = body;//設定郵件内容 

 36.        SmtpClient client = new SmtpClient(smtpHost); 

 37.        //設定發送郵件身份驗證方式 

 39.        client.Credentials = new NetworkCredential(userName, password); 

 40.        client.Send(message); 

 41.    } 

 42.} 

在上面的代碼中,主要用到了在.net2.0中新增的兩個類,分别是System.Net.Mail.MailMessage和System.Net.Mail.SmtpClient兩個類,在SMTP身份驗證方面用到了System.Net.NetworkCredential類。

本文轉自周金橋51CTO部落格,原文連結: http://blog.51cto.com/zhoufoxcn/167052,如需轉載請自行聯系原作者

繼續閱讀