用图表发送邮件

时间:2015-03-31 14:09:38

标签: php email charts pie-chart

我想在php的电子邮件正文中发送包含图表的电子邮件,但我没有收到。

我已经测试了一些方法,例如图片图表谷歌(已弃用),谷歌图表,jqgraph但没有成功。

2 个答案:

答案 0 :(得分:5)

一种解决方案是创建在服务器上生成的静态图像,并在电子邮件中发送该图像。 javascript图表库ZingChart提供了一个特殊的构建,可以与无头服务器端浏览器PhantomJS一起使用,允许您创建图表的png图像。 http://www.zingchart.com/docs/features/phantomjs/

我是ZingChart开发团队的一员,如果您有任何疑问,请告诉我。

答案 1 :(得分:2)

最简单的方法可能是使用静态图像图表生成器。在线有许多不同的服务。为此,我创建了QuickChart,这是Chart.js图表​​的开源呈现服务。

自从标记了帖子pie-chart之后,我们就进行Chart.js饼图配置(请参见Chart.js pie chart reference):

{
  "type": "pie",
  "data": {
    "datasets": [
      {
        "data": [84, 28] 
      } 
    ],
    "labels": ["Data1", "Data2"] 
  } 
}

您可以将此配置放入PHP变量中:

$chartConfig = '{
  "type": "pie",
  "data": {
    "datasets": [
      {
        "data": [84, 28] 
      } 
    ],
    "labels": ["Data1", "Data2"] 
  } 
}';

URL对https://quickchart.io/chart端点进行编码:

$chartUrl = 'https://quickchart.io/chart?c=' . urlencode($chartConfig);

然后,使用标准HTML <img>标签将此URL直接嵌入电子邮件中:

$email_body = "Please see my chart: <img src=\"$chartUrl\" />";

它在下面显示图像!

Pie chart image for email

替代方法包括:

  • wkhtmltoimage,用于呈现页面的命令行实用程序
  • Puppeteer之类的无头渲染器(PhantomJS也可以,但不再受支持)
  • 自行托管自己的QuickChart实例