sql-server - 使用 sp-send-dbmail 将 Canvas 转换为图像并通过电子邮件发送
问题描述
目前,我正在尝试使用 SQL Server 中的存储过程(从某些查询中提取和显示数据)发送电子邮件,方法是尝试将 HTML Canvas 转换为 PNG 图像并将其发送到邮件正文(无附件)。然而,我得到的只是一封空白电子邮件。
这个想法是为每一行生成一个包含全部数据的图像,并将其发送到相应的电子邮件。
这是我想要制作的矩形的画布,但无济于事。
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Image</title>
<script>
function init() {
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
ctx.fillRect(50,50,50,50);
var img = new Image();
img.src = canvas.toDataURL("image/png");
return img;
}
function draw(ctx) {
var alpha = ctx.globalAlpha;
// capa1/Rectngulo
ctx.save();
ctx.save();
ctx.shadowColor = "rgb(0, 0, 0)";
ctx.shadowOffsetX = 0.0;
ctx.shadowOffsetY = 7.0;
ctx.shadowBlur = 10.0;
ctx.globalAlpha = alpha * 0.30;
ctx.beginPath();
ctx.moveTo(294.4, 146.3);
ctx.lineTo(15.9, 146.3);
ctx.lineTo(15.9, 8.0);
ctx.lineTo(294.4, 8.0);
ctx.lineTo(294.4, 146.3);
ctx.closePath();
ctx.fillStyle = "rgb(213, 213, 213)";
ctx.fill();
ctx.lineWidth = 0.8;
ctx.stroke();
// capa1/Rectngulo
ctx.shadowColor = "rgb(0, 0, 0)";
ctx.shadowOffsetX = 0.0;
ctx.shadowOffsetY = 7.0;
ctx.shadowBlur = 10.0;
ctx.beginPath();
ctx.moveTo(294.4, 338.2);
ctx.lineTo(15.9, 338.2);
ctx.lineTo(15.9, 199.8);
ctx.lineTo(294.4, 199.8);
ctx.lineTo(294.4, 338.2);
ctx.closePath();
ctx.fill();
ctx.stroke();
// capa1/Rectngulo
ctx.shadowColor = "rgb(0, 0, 0)";
ctx.shadowOffsetX = 0.0;
ctx.shadowOffsetY = 7.0;
ctx.shadowBlur = 10.0;
ctx.beginPath();
ctx.moveTo(613.3, 241.4);
ctx.lineTo(334.8, 241.4);
ctx.lineTo(334.8, 103.1);
ctx.lineTo(613.3, 103.1);
ctx.lineTo(613.3, 241.4);
ctx.closePath();
ctx.fill();
ctx.stroke();
// capa1/Rectngulo
ctx.shadowColor = "rgb(0, 0, 0)";
ctx.shadowOffsetX = 0.0;
ctx.shadowOffsetY = 7.0;
ctx.shadowBlur = 10.0;
ctx.beginPath();
ctx.moveTo(932.8, 148.2);
ctx.lineTo(653.8, 148.2);
ctx.lineTo(653.8, 35.9);
ctx.lineTo(932.8, 35.9);
ctx.lineTo(932.8, 148.2);
ctx.closePath();
ctx.fill();
ctx.stroke();
// capa1/Rectngulo
ctx.shadowColor = "rgb(0, 0, 0)";
ctx.shadowOffsetX = 0.0;
ctx.shadowOffsetY = 7.0;
ctx.shadowBlur = 10.0;
ctx.beginPath();
ctx.moveTo(932.8, 308.2);
ctx.lineTo(653.8, 308.2);
ctx.lineTo(653.8, 195.9);
ctx.lineTo(932.8, 195.9);
ctx.lineTo(932.8, 308.2);
ctx.closePath();
ctx.fill();
ctx.stroke();
}
</script>
</head>
<body onload="init()">
<canvas id="canvas" width="1315" height="361"></canvas>
</body>
</html>
HTML 部分的 SQL Server 存储过程中的代码如下所示:
EXEC msdb.dbo.sp_send_dbmail
@profile_name = 'SQL ALERTING',
@body = @body,
@body_format ='HTML',
@recipients = @@email,
@subject = 'Test' ;
谁能帮我告诉我出了什么问题或是否有替代方法?提前致谢!