評分: 

邊做邊學 Web Application Toolkit 系列 5 - Web Application Toolkit for Template Driven Email 簡介與操作示範

邊做邊學 Web Application Toolkit for Template Driven Email 簡介與操作示範


一.Web Application Toolkit for Template-Driven E-Mail 概觀

Web Application Toolkit for Template-Driven E-Mail 是應用於 Web 程式發送動態的、基於樣板的電子郵件,有許多常見的情況需要發送電子郵件通知使用者,例如:

  • 使用者建立新帳號時的電子郵件通知
  • 密碼忘記時,以電子郵件發送新的密碼給使用者
  • 消費購物時,以電子郵件通知消費者信用卡交易明細與金額
  • IT 系統管理異常時的電子郵件通知警訊

本 Toolkit 提供了名為「TemplateDrivenE-Mail」的可重複使用元件,它可以用來方便地生成和發送動態基於 Templates 的 HTML 格式電子郵件,且可以輕鬆建立與客製化 Templates 樣板,而這個 E-Mail Templates 樣板是基於 XSL(Extensible Stylesheet Language)的標準。

此外,Template-Driven E-Mail 是一個 .NET 類別庫元件,可以加入到你的 Web 應用程式、在背景執行的 Windows Services 服務或其他型態的 .NET 應用程式,達到重複使用之目的。


圖1 以 E-Mail Templates 發送電子郵件畫面

系統需求

  1. .NET Framework 3.5 SP1
  2. VWD 2008 Expression 或 VS 2008 Professional Edition 以上版本

二.Web Application Toolkit for Template-Driven E-Mail 套件與專案範例

本節將說明 Web Application Toolkit for Template-Driven E-Mail 套件的安裝,以及範例程式之組成,以下是說明:

  1. E-Mail Toolkit 下載與安裝

    請至 http://code.msdn.microsoft.com/WebAppToolkitE-Mail 網址下載安裝「Web Application Toolkit for Template-Driven E-Mail」套件,預設解壓縮路徑為「C:\ TemplateDrivenE-Mail」,解壓縮完成後,裡面有 code 與 docs 兩個目錄

     

  2. E-Mail Toolkit 技術說明文件

    以瀏覽器開啓「C:\ TemplateDrivenE-Mail\docs\Overview.htm」檔案,它是Web Application Toolkit for Template-Driven E-Mail技術說明文件,包括了概觀、網站功能操作管理及專案程式的基本說明。

     

  3. E-Mail Toolkit 專案程式範例之組成

    E-Mail Toolkit 方案中包含三個專案,依序為(圖2):

    • TemplateDrivenE-Mail 專案:這個專案是用來建立與發送 E-Mail 的核心程式,它是 .NET 類別庫的型式,編譯後會產生 .dll 組件,然後可被引用到其他專案中。
    • TemplateDrivenE-Mail.SimpleE-Mail 專案:這個專案是用來測試電子郵件輸入與發送的範例程式,至於發送電子郵件的功能是直接使用上面所提的 TemplateDrivenE-Mail.dll 組件,由它來提供電子郵件的建立與發送功能,達到重複使用的目的。
    • TemplateDrivenE-Mail.TransformationTestApp 專案:這個專案主體是用來測試 XSLT 樣板的轉換,只要指定 .xml 與 .xsl 二個檔案,就能夠進行 XSLT 樣板的轉換,以此來格式化 E-Mail 的資料內容呈現格式。


      圖2 E-Mail Toolkit 專案程式

一般來說,以 .NET 程式發送電子郵件,您也許會直接在 .aspx 中撰寫下列程式碼:

SmtpClient client = new SmtpClient();
MailAddress from = new MailAddress("jane@contoso.com",
   "Jane " + (char)0xD8 + " Clayton",System.Text.Encoding.UTF8);
MailAddress to = new MailAddress("ben@contoso.com");
MailMessage message = new MailMessage(from, to);
message.Body = "這是由 Web 發送的電子郵件.";
message.BodyEncoding = System.Text.Encoding.UTF8;
message.SubjectEncoding = System.Text.Encoding.UTF8;
//發送電子郵件
client.Send(message);

雖然這是最簡單直覺的寫法沒錯,但如果站在 Reuse 重複使用,還有欲套用不同 XSL 樣板的立場來看,這可能不是最佳的方式,比較好的作法是將 E-Mail 發送的程式獨立抽出,寫成類別來達成重複使用及套用樣板之目的。而本 Toolkit 就是這樣的做法,將發送 Mail 的程式寫成 E-Mail.cs,將 XML 資料套用 XSL 樣板的程式寫成 E-MailTemplates.cs,編譯後會產生 TemplateDrivenEmail.dll 組件,然後在 .aspx 程式中只需引用與呼叫 TemplateDrivenEmail.dll 組件,例如以下是發送電子郵件之程式:

protected void SendTemplateDrivenE-MailSimple()
{
    string simpleTemplatePath = Path.Combine(HttpRuntime.AppDomainAppPath, 		"App_Data/E-MailTemplates/SimpleTemplate.xsl");
    
    E-MailTemplateParameters simpleTemplateParameters = new 	 					E-MailTemplateParameters();
    simpleTemplateParameters.Add("UserName", "John Smith");

    E-Mail.Send(this.recipientTextBox.Text, this.subjectTextBox.Text, 					simpleTemplatePath, simpleTemplateParameters);
}

這樣您就可以不必理會過於繁瑣的 E-Mail 發送細節,且能在不同專案中重複引用 E-Mail 相關的組件,這就是本 Toolkit 的精神。

三.執行與操作 E-Mail Toolkit 網站

讓我們來實際操作 Web Application Toolkit for Template-Driven E-Mail,請以 VS 2008 開啓「C:\TemplateDrivenE-Mail\code\CSharp\TemplateDrivenE-Mail - All.sln」方案。

  1. 電子郵件發送測試

    在方案載入後,按下 F5 鍵執行 TemplateDrivenE-Mail.SimpleE-Mail 專案,選擇 E-Mail Type 電子郵件類型後,按下【Send】發送按鈕,寄出電子郵件。


    圖3 發送各類型電子郵件內容

    而上圖的 E-Mail Type 三種類型的電子郵件說明如下:

    • Plain Text E-mail:電子郵件內容為純文字格式。
    • Template Driven E-mail – Simple:電子郵件內容套用簡單的 XSLT 樣板。
    • Template Driven E-mail – Advanced:電子郵件內容套用複雜的 XSLT 樣板。

    在發送電子郵件完成後,可以點選「Click here to get the E-Mail」超連結檢視剛才發出去的電子郵件內容,後面並附上三種類型的電子郵件畫面。


    圖4 檢視開啓電子郵件


    圖5 純文字電子郵件


    圖6 套用簡單 XSLT 樣板電子郵件


    圖7 套用進階 XSLT 樣板電子郵件

    而本專案發送 E-Mail 之所以不需要 SMTP 伺服器,這是因為在 Web.config 的 <smtp /> 區段中,設定了「deliveryMethod="SpecifiedPickupDirectory"」,指示將電子郵件寫入硬碟中,所以電子郵件 .eml 檔會寫入「app_data\E-Mails」的資料夾中:

<system.net>
  <mailSettings>
    <smtp deliveryMethod="SpecifiedPickupDirectory" 		from="no-reply@simple-E-Mail.com">
      <!--電子郵件寫入目錄-->
      <specifiedPickupDirectory pickupDirectoryLocation="App_Data\E-Mails" />
    </smtp>
  </mailSettings>
</system.net>
  1. XSL Transformation 轉換測試

    而範例程式中還有另一個「TemplateDrivenE-Mail.TransformationTestApp」專案,這個專案其實是在講解 XML 資料套用複雜 XSLT 樣板的用法,例如以下的 XML Input Data 請指定「ItemBid.xml」,而 XSLT File Path 請指定「ItemBid.xsl」,然後按下【Convert】按鈕便可進行轉換套用,按下【HTML Result】Tab 頁籤,便會顯示以下畫面。


    圖8 XML 資料套用 XSLT 樣板

    註:ItemBid.xml與ItemBid.xsl 的檔案路徑為「C:\TemplateDrivenE-Mail\code\CSharp\TemplateDrivenE-Mail.TransformationTestApp\SampleData」。


    圖9 原始的 ItemBid.xml


    圖10 ItemBid.xsl 樣板定義

    由上圖9 和圖10 可以看到,XML 是極為簡單的資料,但套用不同的 XSL 定義檔後,便能呈現複雜多變的畫面外觀(圖8),這便是基於樣板的 E-Mail 製作理念。

四.結論

在介紹 E-Mail Toolkit 設計精神後,相信您應該可以瞭解它是為了達成 E-Mail 元件重複使用之目的,同時讓 XML 資料彈性套用不同 XSL 樣板,以呈現多變的畫面外觀,而在下一篇 E-Mail Toolkit 教學會進一步深入探討,講解程式語法的相關細節與 XSL 程式原理。

Microsoft 正展開一份線上問卷調查,了解您對於網站的看法。如果您選擇參加,您離開網站時即會顯示線上問卷調查。

您是否想要參加?