Ant*_*t P 7 html email-client base html-email
我们有一个内容管理的解决方案(SDL Tridion,具体而言;问题更为一般),其中包括多个具有不同语言内容的网站.它们共享许多基于Razor的模板,这些模板用于在发布页面时呈现具有特定注入内容的HTML片段.
CRM也通过CMS进行管理,同样的模板用于创建电子邮件新闻稿.这些HTML电子邮件包含图像,这些图像将发布到管理相关分发列表的任何站点.由于模板系统是通用的,并且CMS没有最终产品的绝对URL的概念,因此这些图像都嵌入了相对地址.我们有能力将绝对URL作为元数据应用于CMS中的不同网站,并编写.Net扩展以将这些URL格式化为渲染图像标记; 但是,这会给这项工作增加相当大的开销.
我们可以通过在电子邮件标记<base href="..." />的<head>部分中使用标记来解决此问题.这似乎在Outlook中起作用,至少; 但是,我无法找到有关电子邮件客户端执行和不支持此标记的最新信息.
那么问题是:电子邮件客户端(特别是基于浏览器的客户端)的支持程度如何<base>?
不幸的是,它不适用于大多数基于Web的电子邮件客户端(Hotmail,Gmail),通常会占到大约30%的接收者.
为什么它不起作用:大多数基于Web的客户端会注入电子邮件正文标记内的任何内容,并删除其他所有内容,包括head.所以,如果你发送:
<html>
<head><base ...></head>
<body><p class="youremail">Email</p></body>
</html>
Run Code Online (Sandbox Code Playgroud)
电子邮件客户端这样做:
<html>
<head><Email client head></head>
<body>
<email client wrapper>
<email>
<p class="youremail">Email</p>
</email>
<email client wrapper>...
</body>
Run Code Online (Sandbox Code Playgroud)
因此您的基本标签将被剥离.即使它不是,因为它不包含在电子邮件客户端的头部,它将被浏览器忽略.
不幸的是,图像上的绝对路径是要走的路.我过去使用'预检处理器'遇到了类似的问题.您可以使用它来获取<base>href并在返回完成的HTML之前将其设置在所有图像上.