<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

    主站蜘蛛池模板: 91在线视频免费看| 久久精品中文字幕免费| 大学生a级毛片免费观看| 91亚洲精品第一综合不卡播放| 13小箩利洗澡无码视频网站免费 | 国产成人精品日本亚洲网址 | 看亚洲a级一级毛片| 日韩精品视频免费网址| 亚洲国产精品无码久久98| 免费被黄网站在观看| 污视频网站在线观看免费| 亚洲福利精品一区二区三区 | 亚洲性线免费观看视频成熟| 免费中文熟妇在线影片| 亚洲人成网站色7799| 一本色道久久88综合亚洲精品高清| 福利片免费一区二区三区| 国产成人99久久亚洲综合精品| 国产一级a毛一级a看免费人娇| 亚洲国产精品乱码一区二区 | 日本高清免费不卡在线| 国产亚洲视频在线观看网址| 亚洲午夜精品久久久久久浪潮| 国产一级在线免费观看| 亚洲色成人网一二三区| 我要看免费的毛片| 无套内谢孕妇毛片免费看看| 亚洲理论电影在线观看| 中文毛片无遮挡高潮免费| 国产产在线精品亚洲AAVV| 国产亚洲精品va在线| 亚洲视频免费观看| 亚洲a∨无码一区二区| 永久亚洲成a人片777777| 99精品一区二区免费视频| 亚洲精品综合在线影院| 亚洲偷自拍拍综合网| 7x7x7x免费在线观看| 无套内射无矿码免费看黄| 亚洲综合久久成人69| 少妇亚洲免费精品|