0

I am trying to send an email via Sendgrid using the following code. The email has an image which I am trying to send.

        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;

Following is what i see in gmail after sending the image.

Result in gmail

I referred to sendgrid blogpost for embedding image via base64. Please suggest if I am doing wrong somewhere.

Manoj Sethi
  • 1,898
  • 8
  • 26
  • 56

1 Answers1

-1

Do you check if you have it set?

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

If you set,you trying

  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 + "\" />";
sopcce
  • 19
  • 3