7

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

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

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

<base>那么问题来了:标签在电子邮件客户端(尤其是基于浏览器的客户端)中的支持范围有多广?

4

2 回答 2

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。

于 2013-02-06T09:57:17.103 回答
0

我不知道您是否使用 Razor,但如果是,您可以在 razor 视图中执行此操作:

src="@Request.Url.GetLeftPart(UriPartial.Authority)~/images/screenshot.png"
于 2017-01-09T21:50:09.603 回答