ActionMailer在某些客户端中损坏的电子邮件图像

时间:2015-07-03 16:20:10

标签: image html-email actionmailer

我正在使用ActionMailer发送电子邮件,这些电子邮件包含图片。要正确设置我在暂存/生产中使用<%= image_tag('email-logo.png') %>config.action_controller.asset_host的图像。

这些图片在Outlook中看起来很好(我也在一些临时电子邮件服务中尝试过,它们也可以在那里工作),但在Gmail,Apple Mail(桌面+ iOS)和邮箱应用程序中看起来很糟糕。

电子邮件HTML版本的编码为quoted-printable,这是正确的吗?

当我检查Gmail中的原始电子邮件时,图片的标记显示为:

  <img alt=3D"Site Logo" class=3D"logo" src=3D"//staging.mysite.come/ass=
ets/email-logo-98e7cf6a48a4f2186ab9de2dcdfaa4bf0.png" style=3D"width: 30=
px; display: inline; vertical-align: middle;" />

当我删除=并在浏览器中加载网址时,它显示正常。 =会破坏它吗?可能是图片网址中缺少协议吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

=没有任何问题。 quoted-printable编码中的软换行符用于符合76个字符行长度,并且在解码文本时将其删除并连接两行。有关详细信息,请参阅wikipedia page on Quoted-printable

我怀疑Gmail无法预取图片。 Gmail会尝试预取图像,然后通过其安全代理服务器提供图像。有关详细信息,请参阅this official post。为此,图像需要具有可公开访问的URL。与其他客户可能会发生类似的事情。

所以这里可能会发生两件事:

  • Gmail(和其他客户端)不支持协议相对(或“无模式”)网址(他们可能会尝试http然后https,但我不知道他们是否这样做了) 。为了安全起见,我会使用完整的网址。
  • 即使尝试使用httphttps,图片也无法公开访问。你正在使用staging env,也许它受到http basic auth的保护? .come中的staging.mysite.come作为TLD也很奇怪,但我认为这只是一个错字......