使用相对 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