使用相对 url 时,VML 图像未加载到电子邮件中
VML image is not loaded in email when using relative url
我正在将图像从公共托管站点移动到我的 Visual Studio 项目。这样做之后,VML 图像 (<v:image />
) 不再加载。图像 url 类似于 /images/my-image.png
,使用简单 <img />
HTML 元素。邮件结构是这样制作的,因为需求是在图片上显示动态文本。
我使用 PapercutSMTP
检查了电子邮件正文,链接是正确的。我也尝试过对它们进行硬编码,但没有成功。
注意:我在本地进行测试,但在测试环境中也会发生同样的情况。我专注于 Outlook、Gmail、IE。
我的代码:
<td class="emailnomob" align="center" valign="middle" background="<%=HeaderBackgroundImageUrl %>" bgcolor="#dddddd" style="background-image:url('<%=HeaderBackgroundImageUrl %>');background-size:100%;background-repeat:no-repeat; width:600px; height:300px;">
<!--[if gte mso 9]>
<v:image xmlns:v="urn:schemas-microsoft-com:vml" style="width:600px; height:300px;" src="<%=HeaderBackgroundImageUrl %>" />
<v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="false" stroke="false" style="position: absolute; width:600px; height: 300px;">
<v:fill opacity="0%" color="#f7901e" />
<v:textbox inset="0,0,0,0">
<![endif]-->
<table width="560" cellpadding="0" cellspacing="0" border="0" align="center" style="width:560px;">
// My text over image here
</table>
<!--[if gte mso 9]>
</v:textbox>
</v:fill>
</v:rect>
</v:image>
<![endif]-->
</td>
我通过在 :url ()
和 src=""
属性中添加 Content identifier
(cid) 解决了这个问题。
<td class="emailnomob" align="center" valign="middle" background="<%=HeaderBackgroundImageUrl %>" bgcolor="#dddddd" style="background-image:url('cid:my-image.png');background-size:100%;background-repeat:no-repeat; width:600px; height:300px;">
<!--[if gte mso 9]>
<v:image xmlns:v="urn:schemas-microsoft-com:vml" style="width:600px; height:300px;" src="cid:my-image.png" />
...
</td>
在电子邮件中嵌入图像是一种非常古老的方法。
这里有更多关于实施细节的信息Whosebug post
我正在将图像从公共托管站点移动到我的 Visual Studio 项目。这样做之后,VML 图像 (<v:image />
) 不再加载。图像 url 类似于 /images/my-image.png
,使用简单 <img />
HTML 元素。邮件结构是这样制作的,因为需求是在图片上显示动态文本。
我使用 PapercutSMTP
检查了电子邮件正文,链接是正确的。我也尝试过对它们进行硬编码,但没有成功。
注意:我在本地进行测试,但在测试环境中也会发生同样的情况。我专注于 Outlook、Gmail、IE。
我的代码:
<td class="emailnomob" align="center" valign="middle" background="<%=HeaderBackgroundImageUrl %>" bgcolor="#dddddd" style="background-image:url('<%=HeaderBackgroundImageUrl %>');background-size:100%;background-repeat:no-repeat; width:600px; height:300px;">
<!--[if gte mso 9]>
<v:image xmlns:v="urn:schemas-microsoft-com:vml" style="width:600px; height:300px;" src="<%=HeaderBackgroundImageUrl %>" />
<v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="false" stroke="false" style="position: absolute; width:600px; height: 300px;">
<v:fill opacity="0%" color="#f7901e" />
<v:textbox inset="0,0,0,0">
<![endif]-->
<table width="560" cellpadding="0" cellspacing="0" border="0" align="center" style="width:560px;">
// My text over image here
</table>
<!--[if gte mso 9]>
</v:textbox>
</v:fill>
</v:rect>
</v:image>
<![endif]-->
</td>
我通过在 :url ()
和 src=""
属性中添加 Content identifier
(cid) 解决了这个问题。
<td class="emailnomob" align="center" valign="middle" background="<%=HeaderBackgroundImageUrl %>" bgcolor="#dddddd" style="background-image:url('cid:my-image.png');background-size:100%;background-repeat:no-repeat; width:600px; height:300px;">
<!--[if gte mso 9]>
<v:image xmlns:v="urn:schemas-microsoft-com:vml" style="width:600px; height:300px;" src="cid:my-image.png" />
...
</td>
在电子邮件中嵌入图像是一种非常古老的方法。
这里有更多关于实施细节的信息Whosebug post