带有Razor (.cshtml)模板的电子邮件发送库。.net core 2.0

7

我已经寻找很久了,想要从嵌入式源文件发送电子邮件并使用电子邮件模板的清晰解决方案,但是我仍然没有找到明确的答案。

使用Razor视图作为电子邮件模板非常好用。

我正在尝试创建一个类库作为包,其中将包含每个视图(cshtml文件)和视图模型。该类库还将具有EmailSender服务。

然后,在Web应用程序中引用该类库以发送电子邮件。该库显然可以在其他项目中重复使用。

EmailSender服务将为每种电子邮件类型提供方法。Web应用程序将传递模型,类库将准备电子邮件内容(将模型解析为视图)并返回字符串内容。该字符串内容将被发送为htmlbody电子邮件。

我查看了这个RazorLight library。但它似乎还没有完成或更新到core 2.0。

另一个我发现的解决方案在这里。这种方法的问题在于电子邮件模板不包含模型属性。基本上,模板包含{0},{1}等,格式用于将模型数据解析到模板中。如果模板中有很多参数,则很难记住哪个参数是哪个。
我最近看到了这篇文章ASP.NET Core 2.1.0-preview1:Razor UI in class libraries
它说明Core 2.1.0将允许在类库中添加视图。这会是解决方案吗?
或者你有更好的想法来实现这个吗?

我有一个ViewRenderer,用于使用强类型模型和razor视图生成电子邮件。它在cloudscribe.Web.Common的nuget中可用。您可以在我的cloudscribe core解决方案中的SiteEmailMessageSender中看到示例用法。 - Joe Audette
还有cloudscribe.Email.Senders,它作为一个NuGet可用,并支持SMTP、SendGrid、Mailgun和弹性电子邮件。 - Joe Audette
我将所有的视图,包括电子邮件模板,保存在一个单独的类库中,用于cloudscribe Core 从此项目构建。目前,它们作为嵌入式资源使用,并通过扩展方法在主应用程序的启动中添加。在asp.net core 2.1中,我们将能够在类库中预编译它们。视图可以被复制到Web应用程序视图本地,并将覆盖来自嵌入式资源的视图。 - Joe Audette
我们不应该在评论中聊天,但很乐意在我的 Gitter 网络聊天室中提供更多帮助,网址为 https://gitter.im/joeaudette/cloudscribe。 - Joe Audette
1
我的解决方案可以从类库中工作,但只能在 Web 应用程序的上下文中工作。RazorLight 应该可以在没有 MVC 的情况下工作,但像你一样,我也无法让它工作。我原本想从 Windows 服务中使用它。 - Joe Audette
显示剩余3条评论
1个回答

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接