首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 發送電子郵件完整解析:System.Net.Mail 命名空間深度剖析

     編輯:關於ASP.NET

一、簡介

現今,電子郵件已成為無所不在、非同步通知與分散式訊息系統。許多 Web 開發場合中,伺服器端程式碼都需要產生電子郵件並發送給指定收件者。這些郵件可能通知用戶新建帳戶、提醒遺忘密碼、以郵件形式提交清單,或針對開發人員與網站管理員,提供未處理的例外狀況或用戶回饋訊息。

所幸,ASP.NET 讓發送電子郵件變得非常輕鬆。.NET Framework 1.x 在 System.Web.Mail 類別中包含許多類別,允許以程式設計方式透過幾行程式碼發送郵件。雖然這個命名空間和類別在 .NET Framework 2.0 中仍存在,但已標記為過時,新的郵件支援相關類別位於 System.Net.Mail 命名空間中。

本文將探討 System.Net.Mail 命名空間中的相關類別,分析如何從 ASP.NET 2.0 頁面的 code-behind 類別中發送電子郵件。我們還將說明如何在 Web.config 中指定中繼伺服器訊息,並套用至內建 ASP.NET 伺服器控制項以實現發送郵件(例如用戶建立帳戶或需要密碼提示/重設時)。

二、探討 System.Net.Mail 命名空間中的類別

System.Net.Mail 命名空間共有 16 個不同類別,都與將電子郵件發送到指定的簡單郵件傳輸協定 (SMTP) 伺服器以便進一步提交有關。其中兩個核心類別為:

  • MailMessage:描述一個電子郵件訊息;擁有 From、To、Subject、Body 等屬性。
  • SmtpClient:將指定的 MailMessage 實例發送到指定的 SMTP 伺服器。

通常從 ASP.NET 2.0 頁面發送電子郵件的步驟:

  1. 建立 MailMessage 物件;
  2. 設定其屬性;
  3. 建立 SmtpClient 類別實例;
  4. 指定關於使用該 SMTP 伺服器的細節(若未在 Web.config 中指定);
  5. 透過 SmtpClient 物件的 Send 方法發送 MailMessage。

其中,步驟 1 和 2 可省略,因為 SmtpClient 類別的 Send 方法能接收 MailMessage 物件,或接收四個字串(分別描述郵件內容的 from、to、subject 和 body 部分)。

System.Net.Mail 命名空間中的其他類別提供更高階的電子郵件功能,例如:在郵件中加入附件、嵌入物件、指定 SMTP 伺服器認證資訊等;還有處理 SMTP 特定例外的衍生類別。我們將在後續文章討論這些進階用法。

三、提供 SMTP 伺服器詳細資訊

當從 Outlook 或 Gmail 發送郵件給朋友時,郵件程式使用中繼伺服器建立連線並發送郵件內容(連同其他資訊,如郵件建立日期、格式(文字或 HTML)、收件者等)。中繼伺服器接收訊息,再連線到收件者的 SMTP 伺服器並發送訊息。一旦提交,收件者即可(稍後)使用不同協定(如 IMAP 或 POP3)提取訊息。

因此,為了從 ASP.NET 頁面發送郵件,我們需提供 SmtpClient 類別關於中繼伺服器的資訊。透過中繼伺服器主機名,可指定:對應的連接埠號碼(通常用連接埠 25)、連線到中繼伺服器時是否使用 SSL、以及認證憑證(如必要)。或者,若你可在 Web 伺服器上安裝本地 SMTP 服務,它可定期監視特定的「drop-off」目錄,發送出現在該目錄中的任何訊息。你可配置 SmtpClient 類別是將郵件傳送給單一中繼伺服器,或透過 DeliveryMethod 屬性將郵件投入指定的檢出目錄。

SmtpClient 類別使用的中繼伺服器資訊,可透過 SmtpClient 類別屬性以程式設計方式指定,也可集中在 Web.config 檔案中。若要使用 Web.config 方式,可在 <configuration> 元素內加入 <system.net> 元素,再加入包含 <smtp> 元素(其設定在 <network> 子元素中指定)的 <mailSettings> 元素。程式碼如下:

<configuration>
 <!-- 將電子郵件設定加入 <system.net> 元素 -->
 <system.net>
<mailSettings>
 <smtp>
<network host="relayServerHostname" port="portNumber" userName="username" password="password" />
 </smtp>
</mailSettings>
 </system.net>
 <system.web> ... </system.web>
</configuration>

其中 host 屬性包含 relayServerHostname。若使用外部中繼伺服器,relayServerHostname 可能類似 smtp.yourisp.com。若中繼伺服器連接埠非預設的 25,可透過 port 屬性指定。大多數外部中繼伺服器要求某種認證(防止匿名垃圾郵件透過中繼發送垃圾信),需提供 userName 和 password 屬性。

只有 SmtpClient 屬性的子集能透過 Web.config 設定指定。若要自訂其他 SmtpClient 屬性(如 EnableSsl、Timeout 等),可在發送郵件時以程式設計方式設定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved