如何导出highcharts图表并通过电子邮件发送?

m1m5dgzv  于 2022-11-10  发布在  Highcharts
关注(0)|答案(1)|浏览(319)

我在我的项目中使用highcharts,我有点新。我的问题是,* 如何获取我的图表的捕获,然后通过电子邮件发送它?* 对于电子邮件发送我使用PHPMailer,电子邮件工作正常。我在highcharts文档中搜索,他们建议节点导出服务器,但没有示例。我从互联网上得到了一些提示,但不工作。我想,当我点击通过电子邮件发送图表按钮,它应该采取图表的图片,并将其发送到电子邮件.所以,谁能好心地帮助我请与一个例子?一个简单的例子我的代码如下:

  1. // import highcharts and export server
  2. <script src="https://code.highcharts.com/highcharts.js"></script>
  3. <script src="https://code.highcharts.com/modules/exporting.js"></script>
  4. // sendGraphByMail is my PHPMailer configuration file
  5. <a href="sendGraphByMail.php">
  6. <button class="send-chart" onclick="sendChart()">Send chart by e-mail</button>
  7. </a>
  8. <div id="container"></div>
  9. <h2>
  10. Exported image below
  11. </h2>
  12. <img id="image" />
  13. <script>
  14. var options = {
  15. chart: {},
  16. xAxis: {
  17. categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
  18. 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
  19. ]
  20. },
  21. series: [{
  22. data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],
  23. type: 'column'
  24. }]
  25. }
  26. var chart = Highcharts.chart('container', options);
  27. function sendChart() {
  28. console.log('Send chart button clicked !');
  29. // I think the exprot script goes here
  30. }

页面屏幕截图如下所示。

nbnkbykc

nbnkbykc1#

我想回答我自己:

  • 我们使用html2canvas来进行屏幕截图。
  • 我们使用SMTPJS发送电子邮件。

对于电子邮件发送,我们使用弹性电子邮件提供商,因为SMTP只接受弹性电子邮件提供商.注意:不要强制同时导入smtpJS和html2canvas

  1. <script src="https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.5/dist/html2canvas.min.js"></script>
  2. <script src="https://smtpjs.com/v3/smtp.js"></script>
  1. function sendChart() {
  2. // get the div id where you dispaly the highchart
  3. let chart = document.getElementById('yourChartId');
  4. // Use the html2canvas function to take a screenshot
  5. html2canvas(chart).then(
  6. function(canvas) {
  7. canvas.style.display = 'none'
  8. document.body.appendChild(canvas);
  9. Email.send({
  10. //SecureToken: 'your security(-4d2c-86ac-41f939394144)',
  11. Host: "smtp.elasticemail.com",
  12. Username: "yourEmail@domain.com",
  13. Password: "yourPassword",
  14. To: 'reciever@gmail.com',
  15. // To: document.getElementById('idname').value, // if you want to get by form
  16. From: "yourEmail@domain.com",
  17. Subject: "Highchart graph",
  18. Body: "Hello, the body of your email",
  19. Attachments: [{
  20. name: "chart.png",
  21. data: canvas.toDataURL()
  22. }]
  23. })
  24. .then(
  25. message => alert(message == 'OK' ? 'Email sent successfully' : message)
  26. );
  27. })
  28. }
展开查看全部

相关问题