我已将图表视图存储在电子邮件中。当我发送它作为电子邮件正文。只有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);
}
}
答案 0 :(得分:0)
Gmail,Yahoo和大多数电子邮件客户端Thunderbird,Outlook等大多数电子邮件服务都不支持Javascript呈现。我认为在电子邮件上支持JS以获取安全措施是不合逻辑的。
要实现目标,您应预渲染并将内容另存为图像。同样,你有很多选择。
选项1:使用带有"导出图片的图形库"功能并在您的电子邮件中包含图像。
选项2:使用无头浏览器技术并截取您的电子邮件内容的屏幕截图。 (Awesome list of headless browsers)
选项3:(类似于选项1)开发一个获取图形数据(或唯一ID)并返回图像的端点。通过这种方式,您无需实现" screenshot"机构。