电子邮件中的HTML <base />标记

时间:2013-01-30 18:33:43

标签: html html-email base email-client

我们有一个内容管理的解决方案(SDL Tridion,具体而言;问题更为一般),其中包括多个具有不同语言内容的网站。它们共享许多基于Razor的模板,这些模板用于在发布页面时呈现具有特定注入内容的HTML片段。

CRM也通过CMS进行管理,同样的模板用于创建电子邮件新闻稿。这些HTML电子邮件包含图像,这些图像将发布到管理相关分发列表的任何站点。由于模板系统是通用的,并且CMS没有最终产品的绝对URL的概念,因此这些图像都嵌入了相对地址。我们有能力将绝对URL作为元数据应用于CMS中的不同网站,并编写.Net扩展以将这些URL格式化为渲染图像标记;但是,这会给这项工作增加相当大的开销。

我们可以使用电子邮件标记的<base href="..." />部分中的<head>标记来解决此问题。这似乎在Outlook中起作用,至少;但是,我无法找到有关电子邮件客户端做什么和不支持此标记的最新信息。

问题是:电子邮件客户端(尤其是基于浏览器的客户端)的广泛支持是<base>标记吗?

2 个答案:

答案 0 :(得分:9)

不幸的是,它不适用于大多数基于Web的电子邮件客户端(Hotmail,Gmail),通常会占到大约30%的接收者。

为什么它不起作用: 大多数基于Web的客户端会在电子邮件的正文标记内注入任何内容,并删除其他所有内容,包括head。所以,如果你发送:

<html>
<head><base ...></head>
<body><p class="youremail">Email</p></body>
</html>

电子邮件客户端执行此操作:

<html>
<head><Email client head></head>
<body>
  <email client wrapper>
  <email>
    <p class="youremail">Email</p>
  </email>
  <email client wrapper>...
</body>

因此您的基本标签将被剥离。即使它不是,因为它不包含在电子邮件客户端的头部,它将被浏览器忽略。

不幸的是,图像上的绝对路径是要走的路。我过去使用'预检处理器'遇到了类似的问题。您可以使用它来获取<base> href并在返回完成的HTML之前在所有图像上设置它。

答案 1 :(得分:0)

我无法判断您是否使用剃刀,但如果您使用剃刀,则可以在剃刀视图中执行此操作:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 tinyos-tools : Depends: sun-java5-jre but it is not installable or
                         sun-java6-jre but it is not installable or
                         oracle-java6-jre but it is not installable or
                         sun-java7-jre but it is not installable or
                         openjdk-6-jre but it is not installable or
                         openjdk-7-jre but it is not installable
E: Unable to correct problems, you have held broken packages.