asp.net获取呈现的HTML的副本

时间:2011-07-05 14:38:51

标签: asp.net html html-email

我正在创建一个网站,该网站将提供在网站的最终页面上向用户发送动态,代码隐藏,计算驱动内容的副本的选项。要发送电子邮件,我会在用户单击按钮时再次从模型对象获取计算值,手动编写所有HTML标记,将模型数据粘贴到需要的位置。

我的问题是:有没有更简单的方法将网站输出复制到HTML格式的电子邮件?我目前手工编写HTML电子邮件代码,并希望能够获得呈现的HTML的副本,并可以从那里修改它。

2 个答案:

答案 0 :(得分:0)

您可以使用asp.net

访问最终准备渲染的html
Response.WriteFile("filename"); 

方法

答案 1 :(得分:0)

最简单的方法(至少对我而言)是实际创建一个网页,执行您希望它执行的所有操作,然后使用System.Net.WebClientSystem.Net.HttpWebRequest进行删除。

所以你有Page1.aspx允许一个人选择一些东西并提交一个表格,然后你得到Email1.aspx这是最终输出。提交Page1.aspx时,使用WebClient下载Email1.aspx的内容,可能会在需要时传递查询字符串或一些Cookie。用户永远不会“看到”Email1.aspx(当然,除了在他们的电子邮件中),它只是在幕后使用。

这种方法的优点是您可以测试HTML输出而无需跳过SMTP箍。在Email1.aspx页面中,如果需要修改HTML,还可以覆盖OnRender()方法(我认为可能是一个,可能有不同的名称)。或者您可以在下载后修改HTML。如果您正在执行相同的基本HTML修改,则可以继承System.Web.UI.Page,实现自定义呈现,然后让所有电子邮件继承自您的新子类。

重要的是要记住,沿着这条路线创建一个完全独立于用户请求的HTTP请求,因此会话和cookie之类的东西不会自动传递,你需要找到一种方法来做到这一点靠你自己。