通过电子邮件发送图表 [英] Send Chart in Email

查看:106
本文介绍了通过电子邮件发送图表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用ASP.Net和C#在电子邮件的正文中发送折线图.我已经编写了代码以在div标签中显示图表.我想通过邮件发送折线图.该怎么做?

I want to sent a line chart in the body of the E-mail using ASP.Net and C#. I have written a code to show the chart in a div tag. I want to sent the line chart in mail. How to do this?

My Code: jQuery

    var chartData;
    google.load("visualization", "1", { packages: ["corechart"] });

    function Chart() {
        $.ajax({
            url: "HHT_Tracking.aspx/GetData",
            data: "",
            dataType: "json",
            type: "POST",
            contentType: "application/json; chartset=utf-8",
            success: function (data) {
                chartData = data.d;
            },
            error: function () {
                alert("Error loading data! Please try again.");
            }
        }).done(function () {
            //google.setOnLoadCallback(drawChart);
            drawChart();
        });
    };

    function drawChart() {
        var data = google.visualization.arrayToDataTable(chartData);

        var options = {
            title: "Server Monitoring Date Wise",
            pointSize: 5,
            vAxis: { slantedText: true, slantedTextAngle: 90, title: 'MINUTES' }
        };

        var lineChart = new google.visualization.LineChart(document.getElementById('chartDiv'));

        lineChart.draw(data, options);
    }

Source Code:

   <tr>
      <td>
          <div id="chartDiv" style="width: 100%; height: 700px"></div>
      </td>
   </tr>

推荐答案

流代码:

head标签:

<head runat="server">
    <title></title>
     <script type="text/javascript"
          src="https://www.google.com/jsapi?autoload={
            'modules':[{
              'name':'visualization',
              'version':'1',
              'packages':['corechart']
            }]
          }"></script>
    
<script type="text/javascript">
        google.setOnLoadCallback(drawChart);
        function drawChart() {
            var data = google.visualization.arrayToDataTable([
              ['Year', 'Sales', 'Expenses'],
              ['2004', 1000, 400],
              ['2005', 1170, 460],
              ['2006', 660, 1120],
              ['2007', 1030, 540]
            ]);

            var options = {
                title: 'Company Performance',
                curveType: 'function',
                legend: { position: 'bottom' }
            };

            var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
            var txtBase64 = document.getElementById('txtBase64Image');
            google.visualization.events.addListener(chart, 'ready', function () {
                txtBase64.value = chart.getImageURI();
            });
            chart.draw(data, options);
        }
    </script>
</head>

身体标签:

<body>
    <form id="form1" runat="server">
        <div id="curve_chart" style="width: 900px; height: 500px"></div>
        <%--If you want, you can textbox visible false.--%>
        <asp:TextBox ID="txtBase64Image" runat="server" Width="600" TextMode="MultiLine"></asp:TextBox><br/>
        <asp:Button ID="Button1" runat="server" Text="Send Mail" OnClick="Button1_Click" />
    </form>
</body>

在C#代码之后:

public Image Base64ToImage(string base64String)
{
    var imageBytes = Convert.FromBase64String(base64String);
    using (var ms = new MemoryStream(imageBytes, 0, imageBytes.Length))
    {
        var image = Image.FromStream(ms, true);
        return image;
    }
}

按钮单击:发送到邮件图表.看起来EmailSender https://github.com/serkomut/Serkomut.MailSender

Button click: Send to mail chart. Look EmailSender https://github.com/serkomut/Serkomut.MailSender

protected void Button1_Click(object sender, EventArgs e)
{
    var split = txtBase64Image.Text.Split(',')[1];
    var image = Base64ToImage(split);
    var stream = new MemoryStream();
    image.Save(stream, ImageFormat.Jpeg);
    stream.Position = 0;

    var result = new EmailSender()
                    .FromHost("smtp.gmail.com")
                    .Credential("sendermail@gmail.com", "mailPassword")
                    .FromTo(new Message
                    {
                        From = "sendermail@gmail.com",
                        To = "tomail@gmail.com"
                    })
                    .Subject("Subject")
                    .Body("Content text...")
                    .Attachment(new Attachment(stream, "chart_image.jpg", "image/jpg"))
                    .Send();
}

这篇关于通过电子邮件发送图表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆