有没有办法在电子邮件正文中呈现javascript。使用任何服务SMTP或其他。

时间:2017-12-21 06:59:05

标签: javascript asp.net-mvc email email-integration smtpclient

我已将图表视图存储在电子邮件中。当我发送它作为电子邮件正文。只有html元素呈现。但不是javascript。我真的需要这个来渲染......如果有人知道任何方式。在任何服务器/客户端/ mailProtocol上我可以渲染这个.. 这是一些代码示例。 查看字符串功能

public static string RenderRazorViewToString(this Controller controller, string viewName, object model)
        {
            controller.ViewData.Model = model;
            using (var sw = new StringWriter())
            {
                var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
                var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
                viewResult.View.Render(viewContext, sw);
                viewResult.ViewEngine.ReleaseView(controller.ControllerContext, viewResult.View);
                return sw.GetStringBuilder().ToString();
            }
        }

此处发送电子邮件

string result = Renderer.RenderRazorViewToString (this, "Index", null);

      using (var message = new MailMessage("daily@gmail.com", "email@gmail.com"))
    {

 message.IsBodyHtml = true;
                message.Subject = "ChartTest";
                message.Body = result ;
                message.Priority = MailPriority.High;
using (SmtpClient client = new SmtpClient
                {
                    EnableSsl = true,
                    Host = "smtp.gmail.com",
                    Port = 587,
                    Credentials = new NetworkCredential("daily@gmail.com", "myPassword")
                })
                {
 client.Send(message);
 }

}

1 个答案:

答案 0 :(得分:0)

Gmail,Yahoo和大多数电子邮件客户端Thunderbird,Outlook等大多数电子邮件服务都不支持Javascript呈现。我认为在电子邮件上支持JS以获取安全措施是不合逻辑的。

要实现目标,您应预渲染并将内容另存为图像。同样,你有很多选择。

选项1:使用带有"导出图片的图形库"功能并在您的电子邮件中包含图像。

选项2:使用无头浏览器技术并截取您的电子邮件内容的屏幕截图。 (Awesome list of headless browsers

选项3:(类似于选项1)开发一个获取图形数据(或唯一ID)并返回图像的端点。通过这种方式,您无需实现" screenshot"机构。