SendGrid - 图像未显示在HTML电子邮件中

时间:2016-08-09 08:00:28

标签: c# sendgrid

我使用SendGrid v3 API和C#库(v7)发送电子邮件。 在我的电子邮件中,我有一个标题,这是一个png。标头嵌入如下:

<img src="cid:emailheader"/>

在C#代码中,我将图像作为带有相同ContentId的附件发送

var mail = new Mail(from,subject,to,content);

var headerPath = HttpContext.Current.Server.MapPath("~/Resources/email-header.png");

var attachment = new SendGrid.Helpers.Mail.Attachment();
attachment.ContentId = "emailheader";
attachment.Content = Convert.ToBase64String(File.ReadAllBytes(headerPath));
attachment.Type = "image/png";
attachment.Filename = "email-header.png";
mail.AddAttachment(attachment);

var send = sg.client.mail.send.post(requestBody: mail.Get());

然而,当我打开电子邮件时,它说未找到来源,即使图像在附件中正确显示

enter image description here

3 个答案:

答案 0 :(得分:1)

我不是Sendgrid的专家,但我在那里blog post找到了 这建议直接在你的html中进行内联编码。这样您就不需要添加附件了。 (我经常使用这个)

<img alt="My Image" src="data:image/jpeg;base64,/9j/4S/+RXhpZgAATU0AKgA...more encoding" />

也许这是一个适合你的工作。

作为第二种选择: 发送带有我正在使用的图片的电子邮件

  

System.Net.Mail

这里我添加了一个带链接资源的AlternateView。

AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, null, "text/html");
LinkedResource imageResource = new LinkedResource(Imagepath + "Monitoring.png", "image/png")
{
   ContentId = "1",
   TransferEncoding = System.Net.Mime.TransferEncoding.Base64
};
htmlView.LinkedResources.Add(imageResource);
message.AlternateViews.Add(htmlView);

html中的语法与您使用的

相同
<img src="cid:1">

我希望这有帮助。 劳伦特

答案 1 :(得分:1)

将图像嵌入HTML正文中。     <html>     <body>     <img src="cid:emailheader"/>     “ `

答案 2 :(得分:1)

节点

 //imageData= "data:image/png;base64,ine793nfdsf......."

    imageb64 = imageData.replace('data:image/png;base64,' , ''); 
    //remove data:image/png;base64,            

    const msg = {
                to: 'example@gmail.com',
                from: 'test@gmail.com',
                subject: "image attached",
                html :'<img src="cid:myimagecid"/>',
                attachments: [
                  {
                    filename: "imageattachment.png",
                    content: imageb64,
                    content_id: "myimagecid",
                  }
                ]
              };

          sgMail.send(msg);