2

我正在使用 Razor 模板 (cshtml) 构建用于电子邮件的 HTML。虽然我可以让这一切正常工作并且我可以从 ASPNetCore 3.0 Web 应用程序发送电子邮件,但我实际上想从另一个不是 Web 应用程序的进程发送电子邮件。理想情况下,我想对电子邮件进行排队,这可以从任意数量的后端进程触发,然后从作为 Windows 服务运行的计时器之类的服务发送这些邮件,或者可能是通过诸如 Functions 之类的东西在 Azure 中运行的后端工作人员发送这些邮件。

有没有办法在 .NetCore 控制台或其他不在 AspNetCore 中托管的应用程序中利用 RCL 中的剃刀模板?

4

3 回答 3

0

我认为没有办法做到这一点,我很抱歉。:(

于 2019-10-30T09:26:56.470 回答
0

如果我正确理解您的问题,您可以使用我在 .NET Framework 4.6.2 类库中使用的RazorEngine 。还有一个.Net Core Nuget

我从控制台应用程序、Windows 服务和 Azure 云服务(工作者角色)中引用了此类类库项目。

在我的设置中,我必须将 Razor 文件标记为内容,以便将它们复制到 bin 文件夹中。此外,如果库被另一个库引用然后使用该库,则会变得更加复杂;内容没有被复制或被展平(所有 razor 视图最终都位于 bin 文件夹的根目录中,而不是以下目录结构),通过编辑项目文件并添加您自己的复制构建任务可以解决此问题。或者我不得不将剃刀视图嵌入到 DLL 中。

正如我所说,几年前我使用过 RazorEngine,近年来可能会对此有所改进。.Net Core RCL 也可能有所不同,但我相信这是可能的。

如今,我正在使用诸如 SendGrid 或 MailJet 之类的第 3 方服务。对我来说,使用它们可以避免上述大多数问题,并为营销和其他非技术用户提供更好的电子邮件/模板/活动的洞察力。他们可以根据自己的喜好编辑和修改模板,而无需(m)任何代码部署。

于 2019-10-30T10:49:44.353 回答
0

您必须通过 ASP.net 核心引擎运行代码,以便将 Razor 代码转换为 html。否则使用简单的 html 模板。

于 2019-11-04T15:49:11.143 回答