Gmail未在电子邮件中显示嵌入图片

时间:2017-01-25 23:44:51

标签: html asp.net-mvc image gmail html-email

我一直在网上查看不同的主题,在这里讨论将图像嵌入到电子邮件中,以及他们为什么不总是发送图像。我将base64编码的字符串嵌入到img标记中,而gmail拒绝它。当我检查电子邮件时,img src属性为空,并且某些信息已添加到表示其父元素的'a'标记中。我确保将我的gmail设置设置为包含外部图像!当我查看outlook.com电子邮件时,他们会发送图像。

我读过电子邮件和图片必须来自公共服务器?目前我正在从运行iis的localhost发送电子邮件(因为我正在测试)并使用sendgrid发送我的电子邮件。

有人可以给我更多建议,让我在gmail服务的电子邮件中显示图片吗?

仅供参考 - 以下是我构建图像标记的方法。我在img标签中包含了不同的属性来显示它,但这些属性都没有适用于gmail。我也使用'@Raw',因为我正在使用razore引擎nuget包构建我的电子邮件,'Html.Raw()'不适用于Razore引擎!电子邮件文本看起来很好,然后我发送给sendgrid邮寄它,我在outlook中看到它的形象,所以我知道身体很好。

<a href="www.mysite.com/Space/Public/@Model.SpaceId" target="_blank" class="thumbnail" style="margin-bottom: 0px;">
                                <img alt="SpaceImage" title="Space Image" style="display: block" width="225" height="225" src="data:image/jpg;base64,@Raw(Model.SpaceThumbnail)" />
                                <div class="caption">
                                    @Model.SpaceName
                                </div>
                            </a>

1 个答案:

答案 0 :(得分:1)

Whenever we are sending emails, we have to embed the image for it to render successfully in most email clients including gmail. For asp.net it would be something like this:

    string html = @"<html><body><img src=\"cid:imageId\"></body></html>";
    AlternateView view = AlternateView.CreateAlternateViewFromString(html, null, MediaTypeNames.Text.Html);
    LinkedResource imageResource = new LinkedResource("yourImagePath", MediaTypeNames.Image.Jpeg);
    imageResource.ContentId = "imageId";
    view.LinkedResources.Add(imageResource);