<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    風人園

    弱水三千,只取一瓢,便能解渴;佛法無邊,奉行一法,便能得益。
    隨筆 - 99, 文章 - 181, 評論 - 56, 引用 - 0
    數據加載中……

    利用System.Net.Mail發送email

    剛剛看到一篇關于在.NET 中發送Email的文章《從asp.net頁面發送電子郵件》看到使用的還是System.Web.Mail命名空間下的類。我們都知道,在.NET 1.1下大部分都是使用這個命名空間下的類來發送郵件的,使用SmtpMail的Send靜態方法可以很簡單的發送Email,但由于這個類調用的是Windows2000版本以上的操作系統的CDO組件來發送郵件,不管是什么錯誤都會提示是CDO.Message對象無法訪問或其它的CDO.Message異常,我們無法得到很比較詳細的異常信息,給我們的調試帶來的很大的不便。特別是當我們需要Smtp驗證的話,還要給MailMessage添加三個郵件頭定義,相對來說還是比較麻煩的。那么在.NET 2.0下,發送Email的功能已經被設計得非常好了,利用System.Net.Mail空間下的類可以讓我們很簡單地發送各種Email。但是為了兼容原來的版本,所以System.Web.Mail空間并沒有被刪除,這個空間下的類也都被打上Obsolete標記了,使用.NET 2.0 類編譯的話都會提示說,推薦使用System.Web.Mail空間的類來代替。

    下面我們就來看看需要做哪些事才能發送Email的,在這里我也找到了園子里一篇關于.NET 2.0發送Email的文章《基于 .NET 2.0 System.Net.Mail namespace 的郵件發送組件》,它涵蓋了發送和接收郵件。在本篇里,我們只討論如何發送的,我感覺它那邊好像沒有真正用好配置文件。還要自己給SmtpClient指定Stmp帳號的一些信息,事實上我們只需要通過web.config(或app.config)配置一下我們將要使用的Smtp帳號:

    <configuration>

    ??? <system.net>

    ??????? <mailSettings>

    ??????????? <smtp from="hjf1223@tom.com">

    ??????????????? <network host="smtp.tom.com" password=" " port="25" userName="hjf1223" defaultCredentials="false"/>

    ??????????? </smtp>

    ??????? </mailSettings>

    ??? </system.net>

    </configuration>

    .NET 2.0的配置系統就是強大,我們完全不用去參考任何的資料就可以非常簡單的寫出如上的配置了。如上,from屬性就是你將要從哪個郵箱發送Email,host就是smtp服務器地址了,password,port,userName就不用多說了,至于defaultCredentials就需要注意了,當我們不需要smtp服務器驗證發送用戶時,就將它設為false,反之就設為true,當前大多數SMTP服務器都需要用戶驗證的,所以一般情況下都就設為true,讓它使用我們配置好的用戶名和密碼去驗證是否是合法用戶。

    配置文件寫好了,接一來就是程序如何調用了,等我寫出如下的發送Email后,你就感到非常奇怪,真的就這么簡單嗎?是的,就是這么簡單,來看看:

    ??????? MailMessage m_message = new MailMessage();

    m_message.From = new MailAddress("hjf1223@tom.com");

    m_message.To.Add(new MailAddress("hjf1223@gmail.com"));

    m_message.Subject = "使用.NET 2.0發送郵件";

    m_message.Body = "非常簡單 ";

    SmtpClient m_smtpClient = new SmtpClient();

    m_smtpClient.Send(m_message);

    我們甚至沒有一句多余的代碼,就是構造一個MailMessage對象,然后構造一個SmtpClient直接就利用它發送郵件了。比起原來的靜態方法,沒有多一句代碼。這里有的朋友可能就要問了?那smtp帳戶信息哪里來呢?其實你可以調試一下,這時候m_smtpClient對象里屬性就是我們前面配置文件配置的值了。在構重一個SmtpClient時,會自動去讀取system.net配置節下的值,如果用戶有配置smtp信息的話,那么它將會被自動被始到當前的SmtpClient對象,進而利用它去發送Email。在.NET 2.0中發送郵件就只要做這么多工作了,而且非常穩定。

    總結:雖然在.NET 2.0下,使用System.Web.Mail發送郵件很簡單,在錯誤的時候也可以得到比較詳細的異常信息,但是有時候出現的問題也會讓你摸不著頭腦。最經常出現的是,當你的機器有安裝殺毒防火墻,有可能會發不出郵件,但是提示信息卻讓你無法診斷是哪里出問題了,大意是郵件發送被拒絕。出現這種事況是由于防火墻拒絕了我們對25端口的使用,從而造成無法與SMTP服務器正常通信。解決辦法就是關閉它了,相信網上已經有很多的案例了。還有一點要特別注意,要發送郵件的機器必須是直接外網的,由于公司是通過代理上網,所以這個印象特別深。 上面的代碼還有一點需要注意,MailMessage對象的From值必須和配置文件中From值是一樣的,這里好像也可以不用設,大家可以試一下。

    好了,附上代碼,希望能對你有所幫助。


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>? <head>??????? <title>Test</title>??? <!--??? <link rel="stylesheet" type="text/css" href="styles.css">??? -->? </head>??? <body>??? welcome to ivo? </body></html>

    posted on 2006-07-13 08:00 風人園 閱讀(1392) 評論(0)  編輯  收藏 所屬分類: DotNet

    主站蜘蛛池模板: 亚洲成人免费网站| 成人免费无码大片A毛片抽搐| 亚洲狠狠综合久久| 久久久久亚洲AV成人片| 免费看片在线观看| 亚洲精品无码国产片| 亚洲国产一区明星换脸| 久久综合国产乱子伦精品免费| jlzzjlzz亚洲jzjzjz| 在线观看免费黄网站| 亚洲国产成人精品青青草原| 一级毛片直播亚洲| 18女人腿打开无遮掩免费| 黄色免费网址大全| 亚洲国产精品久久人人爱| 亚洲成年人啊啊aa在线观看| 69影院毛片免费观看视频在线| 美女被羞羞网站免费下载| 亚洲系列国产精品制服丝袜第| 免费一区二区视频| 91精品成人免费国产片| 成人国产精品免费视频| 国产亚洲日韩在线三区| 美女视频黄的全免费视频| 在线看片免费人成视频久网下载| 亚洲精品中文字幕| 亚洲成综合人影院在院播放| 亚洲男女内射在线播放| 天天摸天天操免费播放小视频| 久久国产精品免费看| 成在线人免费无码高潮喷水| 久久精品国产亚洲AV电影网| 亚洲日韩乱码中文无码蜜桃| 亚洲中文字幕在线观看| www.亚洲一区| 免费看又爽又黄禁片视频1000| 30岁的女人韩剧免费观看| 西西人体免费视频| 一级做a爱过程免费视频高清| 亚洲av片在线观看| 亚洲人成色77777在线观看大|