我在一个网站上工作,该网站将发送大量的邮箱.我想同时设置页眉和页脚文本,或者甚至模板,以允许用户轻松编辑这些邮箱,如果他们需要的话.

如果我将HTML嵌入C#string文本中,这很难看,他们必须担心转义.包含页眉和页脚的平面文件可能会有用,但感觉有些不对劲.

理想的做法是,以某种方式使用.ASPX页作为模板,然后告诉我的代码为该页提供服务,并使用邮箱返回的HTML.

有没有既好又简单的方法来做这件事?有没有更好的办法来解决这个问题?

Updated:
我添加了一个答案,使您可以使用标准的.aspx页面作为邮箱模板.只需像往常一样替换所有变量,使用数据绑定等,然后捕获页面的输出,瞧!您有您的HTML邮箱!

UPDATED WITH CAVEAT!!!:
我在一些ASPX页面上使用MailDefinition类还不错,但是当try 在运行的服务器进程期间使用这个类时,它失败了.我相信这是因为MailDefinition.CreateMailMessage()方法需要一个有效的控件来引用,尽管它并不总是做一些事情.正因为如此,我会推荐我使用ASPX页面的方法,或者Mun使用ASCX页面的方法,这似乎更好一些.

推荐答案

这里已经有了大量的答案,但我偶然发现了一篇关于如何将Razor与邮箱模板结合使用的很棒的文章.Razor是使用ASP.NET MVC 3推送的,但MVC不需要使用Razor.这是制作邮箱模板的相当巧妙的处理

正如本文所指出的,"Razor最好的地方是,它不像它的前身(webforms),它不与web环境绑定,我们可以轻松地在web之外托管它,并将其用作各种用途的模板引擎."

Generating HTML emails with RazorEngine - Part 01 - Introduction

Leveraging Razor Templates Outside of ASP.NET: They’re Not Just for HTML Anymore!

Smarter email templates in ASP.NET with RazorEngine

Similar Stackoverflow QA

Templating using new RazorEngine API

Using Razor without MVC

Is it possible to use Razor View Engine outside asp.net

Asp.net相关问答推荐

502 DotNet WebApplication的网关nginx已损坏

Razor中的共享本地化资源文件

Thread.CurrentPrincipal 错误地声称是匿名的

httpCompression 和 urlCompression 有什么区别?

如何将 Castle Windsor 与 ASP.Net Web 表单一起使用?

如何计算/查找给定日期的周数?

使用域用户的 SQL 连接字符串?

在每个控制器的 ASP.NET WebAPI 上强制使用 CamelCase

来自 IP 地址的经度和纬度值

如何将 css 类添加到 ASP.Net 中的更新面板?

温莎城堡有什么缺点吗?

防止在 Visual Studio 2008 ASP.NET Web 窗体中复制粘贴时自动生成 ID

设置 Response.Status 生成HTTP 状态字符串无效异常

使 Web.config 转换在本地工作

在 JavaScript 中获取当前会话值?

如何强制 netwtonsoft json 序列化程序将 datetime 属性序列化为字符串?

主机与 DnsSafeHost

人们使用 JScript.Net 的目的是什么?

使用 NLog 在 ASP.NET Web API 2.1 中进行全局异常处理?

将字符串转换为时间