我想創建類似如下線圖:線圖生成的圖像將通過電子郵件發送
我只是不知道是否有可用的ASP.NET MVC生成可用的框架或API因爲我的目標是通過電子郵件發送這個圖表。我在想,如果我可以放一些像<img src="http://imageapi.com?date1=20170101&date=20170130" />
那麼API將處理圖表圖像生成。
上進行搜索,我發現了很多圖表框架的使用JavaScript,但我懷疑它會在不同的電子郵件客戶端正常工作。
非常感謝!
我想創建類似如下線圖:線圖生成的圖像將通過電子郵件發送
我只是不知道是否有可用的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可以根據需要創建這種報告或通過訂閱通過電子郵件發送 –