我已经在网上和这里看到了不同的线索,所以讨论了在电子邮件中嵌入图像以及为什么他们并不总是发送图像。我将一个base64编码的字符串嵌入到一个img标签中,但是gmail拒绝了它。当我检查电子邮件时,img src属性是空的,并且一些信息已经添加到表示它的父元素的'a‘标记中。我确保将我的gmail设置为包含外部图像!当我查看outlook.com电子邮件时,它们确实会发送图像。
我读到电子邮件和图像必须来自公共服务器?目前,我正在从运行iis的本地主机发送电子邮件(因为我正在测试),并使用sendgrid发送电子邮件。
有没有人能给我更多的建议,让图片显示在我的gmail邮件服务中?
仅供参考-这是我如何构造图像标签的。我在img标记中包含了不同的属性,以使其显示出来,但这些属性都不适用于gmail。我也使用'@Raw‘,因为我使用的是razore Engine 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>
发布于 2017-02-04 07:45:35
当我们发送电子邮件时,我们必须嵌入图像才能在包括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);
https://stackoverflow.com/questions/41863749
复制相似问题