Вам нужно будет отправить изображение, потому что электронная почта не будет выполнять Javascript.
Но вы не сможете разместить Javascript на своей странице PHP и встроить тег изображения. Установка Content-type: image/png
для изображения не делает вашу страницу волшебным образом, вам нужно возвращать данные в кодировке png!
Самый простой способ сделать это, вероятно, с помощью QuickChart , который является веб-службой с открытым исходным кодом , которую я создал для визуализации объекта Chart.js в виде изображения.
Исходя из вашего вопроса, это может быть полная конфигурация Chart.js:
{
"type": "bar",
"data": {
"labels": [ "January", "February", "March", "April", "May", "June", "July"
],
"datasets": [
{
"label": "My data",
"fillColor": "rgba(220,220,220,0.5)",
"strokeColor": "rgba(220,220,220,1)",
"pointColor": "rgba(220,220,220,1)",
"pointStrokeColor": "#fff",
"data": [ 65, 59, 90, 81, 56, 55, 40 ],
"bezierCurve": false
}
]
}
}
Упакуйте его в URL и отправьте на конечную точку https://quickchart.io/chart?c=
. Например:
https://quickchart.io/chart?c={ "тип": "бар", "данные": {"метки": ["январь", "февраль", "март", "апрель", "май", "июнь" , "July"], "наборы данных": [{"label": "Мои данные", "fillColor": "rgba (220,220,220,0.5)", "strokeColor": "rgba (220,220,220,1)", "pointColor" : "rgba (220,220,220,1)", "pointStrokeColor": "#fff", "data": [65, 59, 90, 81, 56, 55, 40], "bezierCurve": false}]}}
Не забудьте URL кодировать ваш параметр запроса (ваш браузер автоматически делает это при вводе URL). Вот пример того, как вы можете сделать это в PHP:
$chart = '{
"type": "bar",
"data": {
"labels": [ "January", "February", "March", "April", "May", "June", "July"
],
"datasets": [
{
"label": "My data",
"fillColor": "rgba(220,220,220,0.5)",
"strokeColor": "rgba(220,220,220,1)",
"pointColor": "rgba(220,220,220,1)",
"pointStrokeColor": "#fff",
"data": [ 65, 59, 90, 81, 56, 55, 40 ],
"bezierCurve": false
}
]
}
}';
$encoded = urlencode($chart);
$imageUrl = "https://quickchart.io/chart?c=" . $encoded;
// Embed $imageUrl in your email...
Конечно, вы можете динамически создавать $chart
с вашими собственными значениями, используя, например, json_encode . Но это выходит за рамки этого ответа.
В результате $imageURL
отобразится следующее:
Альтернативой этому подходу является выяснить, как визуализировать Chart.js на вашем собственном бэкэнде, или использовать другую библиотеку, которая поддерживает генерацию диаграмм на стороне сервера в PHP.