【问题标题】:SendGrid Image EmailSendGrid 图像电子邮件
【发布时间】:2018-01-18 07:21:56
【问题描述】:

我正在尝试使用以下代码通过 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 中看到的内容。

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

【问题讨论】:

  • 能否指定您的 .net 框架版本?
  • @Ayberk 我正在使用 4.5.2
  • link 请阅读已接受的答案。谢谢。
  • 你有没有得到这个工作?

标签: c# asp.net .net sendgrid sendgrid-api-v3


【解决方案1】:

你检查你有没有设置?

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 + "\" />";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多