【问题标题】:Why is Gmail converting spaces to "+" in image src?为什么 Gmail 将图像 src 中的空格转换为“+”?
【发布时间】:2016-10-28 10:28:18
【问题描述】:

我正在测试一些将要发送给客户的 HTML 电子邮件,但在 Gmail 中的图像方面遇到了问题。

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

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

例如 https://www.test.com/files/a产品图片.jpg ---> https://www.test.com/files/a+product+image.jpg

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

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

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

谢谢

卢克

【问题讨论】:

  • URL 中不允许有原始空格,而 URL 中的 %20+ 应该是等价的。如果您的服务器无法正确处理+,这听起来像是有问题。
  • 如果这仅适用于一张或几张图片,请自行下载并将它们放在网络服务器上。
  • 图片数以千计,选择的图片取决于客户选择的产品。所有这一切都需要自动发生,所以这不是一个选择。我将查看服务器,看看它是否正确处理了 +。谢谢

标签: email gmail html-email


【解决方案1】:

URL 不能包含空格,需要编码为+%20。见RFC 1738

空格字符不安全

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

【讨论】:

    【解决方案2】:

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

    因此,虽然这是一个(非常)迟到的答案,但它仍然具有相关性

    有趣的是,Gmail 添加了一个“+”号,而其他电子邮件提供商 (Outlook) 允许该空间并简单地添加“%20” html 百分比编码...

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

    redirect 301 /images/staff/john+does.jpg https://example.com/images/staff/john%20does.jpg
    

    当收件人重新加载电子邮件活动时,所有损坏的图像都会加载:)

    【讨论】:

      猜你喜欢
      • 2015-05-02
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 2023-04-06
      • 2011-12-13
      • 2013-08-07
      相关资源
      最近更新 更多