我可以用ASP.NET设置HTML/Email模板吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (77)

我正在一个网站上发送大量电子邮件。我希望设置页眉和页脚文本,甚至可以设置模板,以便用户在需要时轻松编辑这些电子邮件。

如果我在C#字符串文字中嵌入HTML,它很丑,他们不得不担心转义。包括页眉和页脚的平面文件可能会起作用,但关于它的一些内容只是感觉不对。

什么.ASPX是以某种方式将页面用作模板的理想选择,然后告诉我的代码为该页面提供服务,并使用为电子邮件返回的HTML。

有没有一个很好的和简单的方法来做到这一点?有没有更好的方法去解决这个问题?

提问于
用户回答回答于

这里已经有很多答案,但我偶然发现了一篇关于如何在电子邮件模板中使用Razor的优秀文章。Razor被推送ASP.NET MVC 3,但MVC不需要使用Razor。这是非常漂亮的处理电子邮件模板

正如文章指出的那样,“Razor最棒的地方在于它不像其前身(webforms),它不受Web环境束缚,我们可以轻松地将它托管在网络之外,并将其作为模板引擎用于各种目的。”

使用RazorEngine生成HTML电子邮件 - 第01部分 - 简介

利用ASP.NET之外的剃刀模板:它们不仅适用于HTML!

使用RazorEngine的ASP.NET中更智能的电子邮件模板

用户回答回答于

还可能需要尝试加载控件,然后将其呈现为字符串,并将其设置为HTML主体:

// Declare stringbuilder to render control to
StringBuilder sb = new StringBuilder();

// Load the control
UserControl ctrl = (UserControl) LoadControl("~/Controls/UserControl.ascx");

// Do stuff with ctrl here

// Render the control into the stringbuilder
StringWriter sw = new StringWriter(sb);
Html32TextWriter htw = new Html32TextWriter(sw);
ctrl.RenderControl(htw);

// Get full body text
string body = sb.ToString();

然后,可以像往常一样构建电子邮件:

MailMessage message = new MailMessage();
message.From = new MailAddress("from@email.com", "from name");
message.Subject = "Email Subject";
message.Body = body;
message.BodyEncoding = Encoding.ASCII;
message.IsBodyHtml = true;

SmtpClient smtp = new SmtpClient("server");
smtp.Send(message);

用户控件可以包含其他控件,如页眉和页脚,还可以利用数据绑定等功能。

扫码关注云+社区

领取腾讯云代金券