相关疑难解决方法(0)

我可以使用ASP.NET设置HTML /电子邮件模板吗?

我正在开发一个会发送大量电子邮件的网站.我想设置页眉和页脚文本,甚至是模板,以便用户在需要时轻松编辑这些电子邮件.

如果我将HTML嵌入到C#字符串文字中,那就很难看了,他们不得不担心转义.包括页眉和页脚的平面文件可能会起作用,但关于它的一些东西感觉不对.

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

有这么好的方法吗?有没有更好的方法来解决这个问题?

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

更新
了CAVEAT !!!:我在一些aspx页面上使用MailDefinition类就好了,但是当在运行的服务器进程中尝试使用这个类时,它失败了.我相信这是因为MailDefinition.CreateMailMessage()方法需要一个有效的控件来引用,即使它并不总是做某事.因此,我建议使用aspx页面的方法,或使用ascx页面的Mun方法,这看起来好一点.

c# asp.net email templates

94
推荐指数
7
解决办法
13万
查看次数

RazorEngine取消缓存已编译的模板

目前,我使用RazorEngine v2.1作为后台进程的一部分,该进程发送模板化电子邮件(数千个).为了加快速度,模板使用md5 sum作为名称进行编译.这使得当模板被更改时,它被重新编译,并且使用该模板的所有电子邮件都能够使用相同的编译模板.我在列表中跟踪已编译模板的名称,以便我知道何时再次调用编译(并执行其他一些操作).

问题:我发现经过很长一段时间后,经过大量的模板修改,所有这些缓存的编译模板可能仍然在内存中,因为它看起来像是存储在一个dynamic.对于这个可能一次运行几个月而不重启的特定进程,如果所有以前版本的模板仍然存在,这可能构成严重的内存泄漏.

问题:是否有办法取消缓存旧模板,以便它们不再闲置在dynamic

例如,如果我能够自己保留已编译的模板对象并在我想使用它们时将它们传递到RazorEngine中,我可以决定何时将它们抛出并消除内存泄漏.然而,如果RazorEngine已经解决了这个问题,那么了解它也会很方便,因为我在互联网上找不到很多关于这个特定问题的引用.关于为什么应该使用编译模板来减少内存使用量的原因有很多,但我很难找到任何关于在长期应用程序中累积的大量未使用的编译模板的信息.

编辑:我刚刚读了一些关于缓存是如何工作的,如果使用不同的模板传入相同的名称,它将重新缓存它并丢弃旧的.然而,这里的问题仍然存在,因为随着时间的推移,将添加和删除电子邮件,并且随着时间的推移,所有旧的删除的电子邮件仍将存在(即使它不会存储模板的每个版本的副本).

c# service razorengine

14
推荐指数
3
解决办法
1万
查看次数

ASP.NET核心中的Parse Razor字符串

在ASP.NET MVC中,我可以像这样解析Razor脚本:

string template = "It is @DateTime.Now.ToString()";
string result = Razor.Parse(template);
Run Code Online (Sandbox Code Playgroud)

但是核心中不存在这种静态.

我也读过这篇文章,但在我看来,视图代码是一个字符串,所以我不能使用find或者get查看方法ICompositeViewEngine.

关于如何在核心中解析视图字符串的任何建议?

c# asp.net-mvc razor razorengine asp.net-core

8
推荐指数
1
解决办法
4184
查看次数