我一直在网上查看不同的主题,在这里讨论将图像嵌入到电子邮件中,以及他们为什么不总是发送图像。我将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>
答案 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);