2017-01-25 80 views
0

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

我读过电子邮件和图片必须来自公共服务器?目前我从我的本地主机发送邮件运行iis(因为我正在测试)并使用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

每当我们发送电子邮件,我们必须嵌入图像为它在大多数电子邮件客户端包括Gmail成功的渲染。对于asp.net它会是这样的:

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); 
相关问题