2009-06-03 26 views
1

ASP.NET非常適合創建html。我們發送了很多html電子郵件。在過去,我們一直在使用被替換的關鍵字符串加載.html模板,以使電子郵件更加自定義(即[[FirstName]]將被替換爲「John Doe」)。然而,隨着我們添加越來越多的電子郵件活動,定製電子郵件的邏輯開始失控。取代簡單的[[FirstName]]字符串替換,我們的任務就像[[ScholarshipList]],其中ScholarshipList對於我們發送電子郵件的每個用戶都不相同。有沒有辦法使用.aspx頁面作爲從winform應用程序發送的電子郵件的模板?

理想情況下,至少在我看來,這些電子郵件模板將是自包含的.aspx頁面。並且將從其方式類似於我們的WinForm電子郵件使用者應用程序調用到

IEmailTemplate template = EmailTemplates.Load("ScholarshipList.aspx"); 
template.UserID=1234; 
string emailMessage = template.Render(); 

然後ScholarshipList.aspx頁面將類似於其他任何asp.net頁面,它可以有服務器控件,RUNAT =「服務器」腳本和數據綁定。

我看過這篇文章http://www.west-wind.com/presentations/aspnetruntime/aspnetruntime.asp看起來很有希望。有沒有人使用過它?它使用了一些理想情況下可以避免的遠程處理,並且具有有限的錯誤處理機制。我想我還會得到一些其他反饋,然後我走到那條路上。

回答

0

一個快速和骯髒的方式做到這一點是做的HttpWebRequest的url和搶輸出和使用,但那不是像你一樣從大衛雁...

0

你也可以看看智能代碼,基於Asp.net模板生成代碼的開源項目。

http://www.codeplex.com/smartcodegenerator

它與南特和卡西尼集成,因此您可以通過命令行或從你的WinForm的應用程序運行。

但是對於電子郵件來說,使用上面提到的簡單的String.Replace更爲常見,但如果您需要做循環等,那麼模板可能會更好。

爲了解決[ScholarshipList]您沒有asp.net模板提你也可以使用一個文本文件,如:

Hello [[MemberSimpleReplace][FIRSTNAME]], 
Here is your ScholarShipList: 
[[ScholarShip]] 

然後用工廠方法模式實例正確的工廠(這是僞代碼,用我的失誤讓熊)

IEmailContentGenerator gen = EmailContentGenFactory.getGenerator("MemberSimpleReplace"); 
var params = {"FIRSTNAME"}; 
var stringToSubstitute = gen.Generate(params,context); 
var gen2 = EmailContentGenFactory.getGenerator("ScholarShip"); 
var params2 = {}; 
var stringToSubstitute2 = gen2.Generate(params2,context); 

然後,當你可以很容易地實現新的發電機,發電機獲得一組參數,並且會對用戶ID和可能其他一些值的上下文。

還記得,Asp.net是不是在.NET中的唯一模板工具來生成HTML,你可以看看NVelocity例如或Asp.net MVC許多視圖引擎。

相關問題