线图生成的图像将通过电子邮件发送
我想创建类似如下线图:线图生成的图像将通过电子邮件发送
我只是不知道是否有可用的ASP.NET MVC生成可用的框架或API因为我的目标是通过电子邮件发送这个图表。我在想,如果我可以放一些像<img src="http://imageapi.com?date1=20170101&date=20170130" />
那么API将处理图表图像生成。
上进行搜索,我发现了很多图表框架的使用JavaScript,但我怀疑它会在不同的电子邮件客户端正常工作。
非常感谢!
Google Image Charts将这样做。通过URL传递数据和显示设置,它将返回一个图像。
例如。
<img src="https://chart.googleapis.com/chart?cht=lc&chd=t:30,10,45,38,25|10,20,10,20,10&chls=2.0,0.0,0.0&chs=200x125&chg=0,20,3,3,10,20&chxt=x,y&chxl=0:|Week1|Week2|Week3|Week4|Week5|1:|0|20|40|60|80|100&chs=800x300&chm=o,ff9900,0,-1,10.0|d,ff0000,1,-1,10.0&chco=FFC6A5,DEBDDE&chdl=Click|GRU" />
产生以下图表:
他们提供了一个用于测试的游乐场:但是https://developers.google.com/chart/image/docs/chart_playground
注意,谷歌都没有进一步维护它,但没有计划取消该功能:
虽然一个动态Google互动式图表被积极维护,我们在2012年正式弃用静态Google图表图表。这使我们有权在不通知的情况下关闭它,尽管我们没有计划这样做。
注意它可能添加一个右轴为你的百分比也 –
这是很酷的不知道谷歌有这样的事情。这将为我节省很多时间在开发中。的xD – Sherwin
你是什么设计? 您的图表必须在网页中生成,然后它必须生成html。 如果没有生成html并且只生成图像,那么这是最好的。 现在你可以在发送相同的内容。
如果没有再次生成的图像,你在这里2选项 我)一起发送完整的HTML电子邮件正文关切JS/CSS ii)您可以将这些HTML转换成图像使用(比如c#)然后发送邮件。
请注明您的完整场景。
-
有在市场上不同类型的图表API的,开源和许可,您可以使用任何一个来生成页面图表/图,你可以使用下面的代码发送页面作为电子邮件附件。
[HttpPost] public ActionResult SendWebPageAsAttachment() { var subject = Request.Form["subject"]; // You can provide subject from page or code var mailContent = Request.Form["bodyInnerHTML"]; // get the body inner HTML by form name var Body = "<div style='background-color:white;'>" + Request.Form["mailContent"] + "</div>"; // Email Body var attachmentName = DateTime.Now.ToString("yyyy/MM/dd").Replace("/", "-") + "_" + DateTime.Now.ToLongTimeString().Replace(" ", "_") + ".html"; // Attachment Name var baseUrl = HttpContext.Request.Url.Scheme + "://" + HttpContext.Request.Url.Authority + HttpContext.Request.ApplicationPath.TrimEnd('/') + '/'; // Base URL string src = @"src="""; mailContent = mailContent.Replace(src, src + baseUrl.Remove(baseUrl.Length - 1)); mailContent = "<html><head><link href='" + baseUrl + "Themes/styles.css' rel='stylesheet' type='text/css' /><link href='" + baseUrl + "Themes/style.css' rel='stylesheet' type='text/css' /></head><body>" + WebUtility.HtmlDecode(mailContent) + "</body></html>"; try { SmtpClient smtpClient = new SmtpClient("mail.MyWebsiteDomainName.com", 25); smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "myIDPassword"); smtpClient.UseDefaultCredentials = true; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.EnableSsl = true; MailMessage mail = new MailMessage(); //Setting From , To and CC mail.From = new MailAddress("[email protected]", "MyWeb Site"); mail.To.Add(new MailAddress("[email protected]")); mail.CC.Add(new MailAddress("[email protected]")); mail.IsBodyHtml = true; mail.Subject = subject; mail.Body = Body; var mailDataBytes = ASCIIEncoding.Default.GetBytes(mailContent); var mailStream = new MemoryStream(mailDataBytes); mail.Attachments.Add(new Attachment(mailStream, attachmentName)); smtpClient.Send(mail); } catch (Exception ex) { //catch } ViewBag.IsHttpPost = true; return View("SendWebPageAsAttachment"); }
感谢您的支持。 :) – Sherwin
你尝试HTML电子邮件? – VMAtm
你是什么意思html电子邮件? – Sherwin
SQL Server Reporting Services可以根据需要创建这种报告或通过订阅通过电子邮件发送 –