电子邮件图像的故障转移

时间:2013-02-06 15:29:28

标签: html css email outlook

我正在开发一个系统,可以将电子邮件发送给可能从公共访问点或“封闭”访问点(无法访问互联网)读取电子邮件的收件人。我的电子邮件以HTML格式发送,可能嵌入了图像。图像是预定义的并且存在于已知位置。当然,从(公共)互联网上读取的电子邮件无法加载(私人)封闭网络中托管的图像;从封闭网络读取的电子邮件无法从互联网上加载图像

目前,在电子邮件生成过程中,我们会根据收件人的电子邮件地址确定是否应将img src设置为公共路径或私有路径。 我很想找到一种原生的HTML技术,它可以告诉电子邮件客户端“尝试使用图片的公共路径,如果它没有将故障转移加载到此私有路径”。我的理解是电子邮件客户端几乎总是被要求剥离JavaScript,因此ECMA不会成为此解决方案的一部分。不幸的是

尝试1

我尝试将src设置为图片的公共路径,并将background-image样式属性设置为图像的私有路径:

<img src="path/to/ public /my_image.jpg" style="background-image:url('path/to/ private /my_image.jpg');" ..etc.. />

在浏览器中效果很好(特别是在设置了高度/宽度属性的情况下),但Outlook(2007)不支持background-image。所以,没有快乐。

尝试2

我尝试使用table图片创建background

<table background="path/to/private/my_image.jpg">
   <tr>
      <td>
         <img src="path/to/public/my_image.jpg" />
      </td>
   </tr>
</table>

Outlook也没有这样做。

尝试3

本着“它可能足够疯狂”的精神,我尝试为图像提供两个src属性:

<img src="path/to/ public /my_image.jpg" src="path/to/ private /my_image.jpg" ..etc.. />

这在任何地方都无效;只有第一个src会习惯于尝试加载图片。

2 个答案:

答案 0 :(得分:0)

如果您的逻辑是在服务器上制作的,我认为您最好链接到生成/提供正确图像的脚本,而不是直接显示图像?

类似:

<img src="http://www.example.com/path/to/script/image.php?email=info@example.com&amp;name=example-image-1" />
然后

image.php将根据给定的参数建立一些逻辑。这些可能是收件人的电子邮件(可以详细说明他们的访问权限),也可能是图像的名称(这样您就知道在这个位置上要投放哪个图像)。

然后,您需要将image.php作为图像的正确mime类型提供,以便电子邮件客户端可以正确呈现它。

这比尝试在电子邮件中使用黑客更有利。

希望这有帮助吗?

米奇。

PS - 请记住在HTML电子邮件中提供绝对URL。相对图像不起作用。

答案 1 :(得分:0)

为什么不将图像作为附件嵌入?您可以将img标记的src属性指定为“cid:xyz”,其中“xyz”如果是图像附件的“Content-id”MIME属性。