为什么Gmail会在图片src中将空格转换为“+”?

时间:2016-10-28 10:28:19

标签: email gmail html-email

我正在测试一些我将发送给客户的HTML电子邮件,而且我遇到了Gmail中的图片问题。

我在电子邮件中包含的图片来自实时网站。所有其他电子邮件客户端都在加载图片,但Gmail正在为我提供损坏的图片。

我已经知道问题是由于图像文件名中的间距造成的。 Gmail正在将空格转换为“+”。

e.g https://www.test.com/files/a product image.jpg ---> https://www.test.com/files/a+product+image.jpg

我尝试用%20替换图片链接空间,但gmail仍在将这些空间转换为“+”,因此会破坏图像。

我理解图片理想情况下不应包含空格,但网站包含数千种产品,在这种情况下,更改文件名不是一种选择。

有人知道Gmail将空格更改为+的原因吗?或者甚至更好,一种解决这个问题的方法?

由于

2 个答案:

答案 0 :(得分:1)

网址不能包含空格,需要将其编码为+%20。见RFC 1738

  

空格字符不安全

  

所有不安全的字符必须始终在URL中编码

答案 1 :(得分:0)

由于客户发送的电子邮件营销活动,我偶然发现了这个问题。嵌入在电子邮件中的一些图像在文件名中包含空格,因此,一些电子邮件提供商没有在电子邮件活动中正确呈现它们。客户问我是否可以以某种方式追溯修复它,这样他们就不必重新发送(一个很大的收件人列表)

所以虽然这是一个(非常)迟到的答案,但它仍然是相关的

有趣的是,Gmail 添加了“+”号,而其他电子邮件提供商 (Outlook) 允许使用空格,只需添加“%20”html 百分比编码...

我的修复:如果您由于某种原因无法修改存储在服务器上的原始图像文件以删除空格,您可以简单地放置一个 .htaccess 规则来重定向 URL(在 Apache 服务器上),如下所示;

%USERPROFILE%

当收件人重新加载电子邮件活动时,损坏的图像全部加载:)