Преобразование холста в изображение и отправка по электронной почте с помощью sp-send-dbmail - PullRequest
0 голосов
/ 11 июля 2020

В настоящее время я пытаюсь отправить электронное письмо, используя хранимую процедуру на SQL сервере (извлечение и отображение данных из некоторых запросов), пытаясь преобразовать 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>

Код в хранимой процедуре SQL Server для части HTML выглядит следующим образом:

 EXEC msdb.dbo.sp_send_dbmail
   @profile_name = 'SQL ALERTING',  
   @body = @body,
   @body_format ='HTML',
   @recipients = @@email,
   @subject = 'Test' ;

Может ли кто-нибудь помочь я говорю мне, что не так, или есть ли альтернатива? Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...