|
ASP.NET 2.0 中發(fā)送電子郵件變得非常簡單。發(fā)送電子郵件的類庫主要在命名空間System.Net.Mail中,在這個命名空間中有兩個核心類是:
· MailMessage:描述一個電子郵件消息;它擁有From,To,Subject,Body等屬性; · SmtpClient:把一個指定的MailMessage實例發(fā)送到一個指定的SMTP服務(wù)器。 發(fā)送電子郵件的一般步驟是: 1.創(chuàng)建一個MailMessage對象; 2.賦給它的From,To,Subject,Body等屬性; 3.創(chuàng)建一個SmtpClient類實例; 4.指定關(guān)于使用該SMTP服務(wù)器的細節(jié)(如果它們沒有在Web.config中指定); 5.經(jīng)由SmtpClient對象的Send方法發(fā)送該MailMessage。 下面的代碼演示了發(fā)送電子郵件的過程: string mailServerName = "smtp.126.com"; //發(fā)送郵件的SMTP服務(wù)器 string mailFrom = "sender0624@126.com"; //發(fā)件人郵箱(用126的郵件服務(wù)器,就必須用126郵箱的用戶名) string mailTo = "supremezone@126.com"; //收件人郵箱 string subject = "用代碼方式發(fā)送郵件";//郵件主題 string body = "這里是郵件正文了 "; //郵件正文![]() using (MailMessage message = new MailMessage(mailFrom, mailTo, subject, body))![]() ![]() { //SmtpClient是發(fā)送郵件的主體,這個構(gòu)造函數(shù)是告知SmtpClient發(fā)送郵件時使用哪個SMTP服務(wù)器 SmtpClient mailClient = new SmtpClient(mailServerName); //將認證實例賦予mailClient,也就是訪問SMTP服務(wù)器的用戶名和密碼 mailClient.Credentials = new NetworkCredential("sender0624", "111111"); //最終的發(fā)送方法 mailClient.Send(message); }上述方法是通過Code方式發(fā)送郵件的,而在Asp.Net 2.0中Framework考慮更多的是配置式,也就是通過config方式來進行應(yīng)用程序的控制,減少程序參數(shù)硬編碼,這個配置節(jié)屬于<system.net>節(jié)下的。 首先在Web.config文件中增加如下配置節(jié): <system.net> <!--如果是第三方smtp服務(wù)器,需要指定userName 和 password,并根據(jù)host指定發(fā)件人郵件地址from 測試發(fā)現(xiàn)from值必須是userName值加上指定的smpt服務(wù)器才行,而且是必須指定的 如果是本機smtp服務(wù)器,只需指定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>接下來是程序代碼,你會發(fā)現(xiàn)配置方式較Code方式代碼是多么簡潔,而且避免了硬編碼,Smtp信息是從配置文件中讀取的。 using (MailMessage message = new MailMessage())![]() ![]() { message.To.Add(new MailAddress("supremezone@126.com")); //收件人郵箱 message.Subject = "通過配置文件設(shè)置發(fā)送郵件";//郵件主題 message.Body = "這里是郵件正文了 "; //郵件正文![]() SmtpClient mailClient = new SmtpClient(); mailClient.Send(message); }相比Code方式,我們發(fā)現(xiàn)配置方式代碼中省去了發(fā)件人郵箱,SMTP服務(wù)器和SMTP服務(wù)器認證的Credentials,代碼變得相當簡潔,更為重要的是這些信息可以在Web.config文件中配置,這就大大增加了程序的靈活性,這是推薦采用的方式。需要說明的一點,示例中的郵箱用戶名和密碼都是真實的,理論上運行該示例程序是可以正常發(fā)送郵件的,但發(fā)送郵件時程序會拋出異常“郵箱不可用。 服務(wù)器響應(yīng)為: Óû§±»Ëø¶¨ ”,但如果Credentials認證信息換成我另一個126郵箱,卻能正常發(fā)送郵件了,一直沒能找到原因所在,將對SmtpClient發(fā)送郵件的穩(wěn)定性做進一步的研究,也希望能得到大家的指導。 參考資料:ASP.NET 2.0中發(fā)送電子郵件剖析之一,.Net 2.0 中的發(fā)送郵件實現(xiàn)小解。 |
|
|