我正在开发一个系统,可以将电子邮件发送给可以从公共(public)访问点或“封闭”访问点(无法访问互联网)阅读电子邮件的收件人。我以 HTML 格式发送的电子邮件可能嵌入了图像。这些图像是预定义的并且位于已知位置。自然地,从(公共(public))互联网读取的电子邮件无法加载托管在(私有(private))封闭网络中的图像;从封闭网络读取的电子邮件无法从互联网加载图像。
目前,在电子邮件生成期间,我们根据收件人的电子邮件地址确定是否应该设置 img src
成为公共(public)或私有(private)路径。 我很想找到一种 native HTML 技术,它可以告诉电子邮件客户端“尝试这个公共(public)路径到图像,如果它不加载故障转移到这个私有(private)路径”。我的理解是电子邮件客户端几乎总是需要去除 JavaScript,因此 ECMA 不会成为该解决方案的一部分。可悲的是。
尝试 1
我尝试设置 src
作为图像的公共(public)路径,并设置 background-image
style 属性是图像的私有(private)路径:
<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
会习惯于尝试加载图像。
最佳答案
如果您的逻辑是在服务器上进行的,我认为您最好链接到生成/提供正确图像的脚本,而不是直接链接到图像?
类似于:
<img src="http://www.example.com/path/to/script/image.php?email=info@example.com&name=example-image-1" />
image.php
然后将根据给定的参数建立一些逻辑。这些可能是收件人的电子邮件(可以详细说明他们的访问权限),也可能是图像的名称(这样您就知道在这个位置要提供哪个图像)。
然后您需要将 image.php
作为图像的正确 MIME 类型提供,以便电子邮件客户端可以正确呈现它。
这比尝试在电子邮件本身中使用 hack 要有利得多。
希望这有帮助吗?
米奇。
PS - 请记住在 HTML 电子邮件中提供绝对 URL。相关图像将不起作用。
关于html - 电子邮件图像的故障转移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14732667/