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

问题描述 投票:2回答:1

我在电子邮件中存储了图表视图。当我发送它作为电子邮件正文。只有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("[email protected]", "[email protected]"))
    {

 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("[email protected]", "myPassword")
                })
                {
 client.Send(message);
 }

}
javascript asp.net-mvc email email-integration smtpclient
1个回答
0
投票

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

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

选项1:使用具有“导出图像”功能的图形库,并在电子邮件中包含图像。

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

选项3 :(类似于选项1)开发一个端点,该端点获取图形数据(或唯一ID)并返回图像。这样您就不需要实现“屏幕截图”机制了。

© www.soinside.com 2019 - 2024. All rights reserved.