【问题标题】:ActionMailer email images broken in some clientsActionMailer 电子邮件图像在某些客户端中损坏
【发布时间】:2015-09-21 12:55:30
【问题描述】:

我正在使用 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;" />

当我删除 = 并将 URL 加载到我的浏览器中时,它看起来很好。 = 会破坏它吗?会不会是图片网址中缺少协议?

提前感谢您的帮助!

【问题讨论】:

    标签: image html-email actionmailer


    【解决方案1】:

    = 没有任何问题。这是quoted-printable 编码中的软换行符,用于遵守76 个字符的行长,在文本解码时将其删除并连接两行。请参阅wikipedia page on Quoted-printable 了解更多信息。

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

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

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

    【讨论】:

    • 太棒了!它最终是缺乏协议。也是的,come 是一个错字;)谢谢!
    • 很高兴知道,很高兴为您提供帮助!
    • 很好的解释所有这些 = 是什么意思。
    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 2010-11-13
    • 2017-07-03
    • 2015-09-02
    相关资源
    最近更新 更多