zoukankan      html  css  js  c++  java
  • 使用MVC Razor生成格式良好的HTML Body作为邮件内容

    PS: 实例化邮件类MailMessage有一个属性IsBodyHtml指示邮件正文是否是HTML格式。

    我想利用Razor View的Model Binding / Rendering功能为我从ASP.NET MVC应用程序发送的电子邮件生成HTML Body Content。

    有没有办法将视图呈现给字符串,而不是将其作为GET请求的ActionResult返回?

    为了说明我正在寻找可以做以下事情的东西......

        public ActionResult SendEmail(int id)
        {
            EmailDetailsViewModel emailDetails = EmailDetailsViewModel().CreateEmailDetails(id);
    
            // THIS IS WHERE I NEED HELP...
            // I want to pass my ViewModel (emailDetails) to my View (EmailBodyRazorView) but instead of Rending that to the Response stream I want to capture the output and pass it to an email client.
            string htmlEmailBody = View("EmailBodyRazorView", emailDetails).ToString();
    
            // Once I have the htmlEmail body I'm good to go.  I've got a utilityt that will send the email for me.
            MyEmailUtility.SmtpSendEmail("stevejobs@apple.com", "Email Subject", htmlEmailBody);
    
            // Redirect another Action that will return a page to the user confirming the email was sent.
            return RedirectToAction("ConfirmationEmailWasSent");
        }

    如果只需要将视图呈现为字符串,请尝试如下所示:

    public string ToHtml(string viewToRender, ViewDataDictionary viewData, ControllerContext controllerContext)
    {
        var result = ViewEngines.Engines.FindView(controllerContext, viewToRender, null);
    
        StringWriter output;
        using (output = new StringWriter())
        {
            var viewContext = new ViewContext(controllerContext, result.View, viewData, controllerContext.Controller.TempData, output);
            result.View.Render(viewContext, output);
            result.ViewEngine.ReleaseView(controllerContext, result.View);
        }
    
        return output.ToString();
    }

    需要传入视图的名称以及控制器操作中的ViewData和ControllerContext。

    可以Postal使用视图发送电子邮件:https://github.com/andrewdavey/postal

    参考地址:https://cloud.tencent.com/developer/ask/61899

  • 相关阅读:
    js少写if语句
    框架大集合
    new运算符工作原理(new运算符的伪码实现)
    原始数据类型和引用数据类型
    关于input 的选中,自定义input[type="checkbox"]样式
    css伪类与伪元素
    js 的function为什么可以添加属性
    工具,如何去掉百度编辑器 ueditor 元素路径、字数统计等
    多种框架好库的混合使用
    js预编译的四部曲
  • 原文地址:https://www.cnblogs.com/riddly/p/8610183.html
Copyright © 2011-2022 走看看