Asp.net 在Web表单应用程序中将Razor视图用作电子邮件模板

Asp.net 在Web表单应用程序中将Razor视图用作电子邮件模板,asp.net,webforms,razor,email-templates,Asp.net,Webforms,Razor,Email Templates,我有一个asp.net Web表单应用程序,需要发送电子邮件。我喜欢Razor语法,因为您可以在MVC之外使用Razor,所以我想我会尝试使用它。我已经看到,您可以通过编程方式将模板字符串传递给razor,但我希望将razor模板作为单独的.cshtml文件保存 关于如何做到这一点,有没有人有什么简单的、傻瓜式的建议?我尝试从文件中加载它们,如下所示: UserDetails userDetails = new UserDetails {Name = "Fred"}; string templa

我有一个asp.net Web表单应用程序,需要发送电子邮件。我喜欢Razor语法,因为您可以在MVC之外使用Razor,所以我想我会尝试使用它。我已经看到,您可以通过编程方式将模板字符串传递给razor,但我希望将razor模板作为单独的.cshtml文件保存

关于如何做到这一点,有没有人有什么简单的、傻瓜式的建议?我尝试从文件中加载它们,如下所示:

UserDetails userDetails = new UserDetails {Name = "Fred"};
string template = File.OpenText("Email/UserDetailsEmail.cshtml").ReadToEnd();            
string messageText = Razor.Parse(template, userDetails);
都没有用。查找该文件时出现异常。我正在使用razorengine dll

我有其他一切工作,smtp服务器等,只是没有意见


非常感谢您的帮助。

我会使用MVCMailer工具,您可以使用Nuget设置该工具,并使用脚手架创建视图

这是一款非常好的应用程序,可以轻松添加到您的应用程序中:


您需要获取文件的完整路径;相对路径最终将相对于错误的位置


您知道如何从web窗体项目中调用razor视图吗。当我调用“PopulateBody(mailMessage,viewName:“UserDetails”);”我收到一个异常:“值不能为null。\r\n参数名称:routeData”。是否有任何简单的说明来装配MvcMailer内部和web表单应用程序?
File.OpenText(Server.MapPath("~/Email/UserDetailsEmail.cshtml"))