将ASP.NET MVC视图作为HTML文件返回,以便在电子邮件模板中使用

ste*_*776 5 c# asp.net email asp.net-mvc asp.net-mvc-3

我正在构建一个应用程序,它将向最终用户发送自定义电子邮件.

我构建了一个HTML模板,用于构建电子邮件.

我目前有模板填充标签作为自定义内容的占位符...

|Text-Placeholder|
Run Code Online (Sandbox Code Playgroud)

我一直把html文件作为字符串返回给我的CreateEMail方法:

string html = System.IO.File.ReadAllText(Server.MapPath("~/EmailTemplates/emailTemplate.html"));
Run Code Online (Sandbox Code Playgroud)

然后使用String.Replace替换自定义文本/内容

html = html.Replace("|Name-Placeholder|", username);
Run Code Online (Sandbox Code Playgroud)

我很好奇是否有一种方法允许我将模板构造为强烈类型的RazorView作为ViewModel,它将模拟自定义文本/内容,并将视图作为HTML文件返回或直接作为字符串返回到传入我的SMTPClient实例的body属性是否可以发送给用户?

有没有人完成这样或类似的事情?

gid*_*eon 10

看看这些库:

有ActionMailer.灵感来自Ruby的ActionMailer.

ActionMailer.Net旨在成为一种从ASP.NET MVC应用程序发送电子邮件的简单且相对轻松的方式.这个概念非常简单.我们通过利用一些非常时髦的视图引擎来呈现HTML,那么为什么我们不能对电子邮件做同样的事情呢?

http://nuget.org/packages/ActionMailer

我认为支持许多视图引擎,当然包括Razor.并允许您将模型传递到视图中.请参阅:https: //bitbucket.org/swaj/actionmailer.net/wiki/Home

代码 :

public class MailController : MailerBase
{
    public EmailResult VerificationEmail(User model)
    {
        To.Add(model.EmailAddress);
        From = "no-reply@mycoolsite.com";
        Subject = "Welcome to My Cool Site!";
        return Email("VerificationEmail", model);
    }
}
Run Code Online (Sandbox Code Playgroud)

风景:

@using ActionMailer.Net
@model User
@{
    Layout = null;
}
Welcome to My Cool Site, @Model.FirstName. We need you to verify your email.
Click this nifty link to get verified!
Run Code Online (Sandbox Code Playgroud)

还有另一个图书馆:

MvcMailer允许您使用MVC视图生成令人惊叹的电子邮件

http://nuget.org/packages/MvcMailer
https://github.com/smsohan/MvcMailer