0

我正在尝试使用以下代码通过 Sendgrid 发送电子邮件。该电子邮件包含我要发送的图像。

        var client = new SendGridClient("MYAPIKEY");
        var from = new EmailAddress("from@from.com");
        var subject = "test";
        var to = new EmailAddress("to@to.com");
        var plainTextContent = "";
        Image s = CreateBitmapImage("Hi");
        ImageConverter converter = new ImageConverter();
        var imageBytes = (byte[])converter.ConvertTo(s, typeof(byte[]));
        var b64String = Convert.ToBase64String(imageBytes);
        var dataUrl = "data:image/jpg;base64," + b64String;
        var htmlContent = "<img src='" + dataUrl + "' />";
        var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);

        var response = client.SendEmailAsync(msg).Result;

以下是我在发送图像后在 gmail 中看到的内容。

结果在 gmail

我参考了 sendgrid博客文章通过 base64 嵌入图像。请建议我是否在某处做错了。

4

1 回答 1

0

你检查你有没有设置?</p>

MailMessage msg = new MailMessage();  
msg.IsBodyHtml = true;   
msg.BodyEncoding = Encoding.GetEncoding("utf-8");   

如果你设置,你尝试

  var dataUrl = "";
  using (System.Drawing.Image s = CreateBitmapImage("Hi"))
  {
    ImageConverter converter = new ImageConverter();
    var imageBytes = (byte[])converter.ConvertTo(s, typeof(byte[]));
    var b64String = Convert.ToBase64String(imageBytes);
    dataUrl = "data:image/jpg;base64," + b64String;
  }
  var htmlContent = "<img src=\"" + dataUrl + "\" />";
于 2018-01-18T08:53:57.383 回答