【问题标题】:Rails attachments inline are not shown correctly in gmailRails 内联附件在 gmail 中未正确显示
【发布时间】:2012-01-11 12:25:20
【问题描述】:

谁能指出问题所在?

我在我的 rails 3.1 应用程序邮件程序中使用内联附件。这封信还包含存储在亚马逊 w3 服务器上的图像。

问题在于 gmail 无法正确显示该字母。我在信中有内联附件。但 Gmail 将这些文件显示为附加文件。这封信还包含一个附加的 html 页面,该页面包含这封信本身。 所有 gmail 显示都是一组符号,我认为这些符号是其中一个附加图像的 base64 版本。

查看屏幕截图。

由于缺少必要的评分,我无法发布图片,所以我发布了here

这是我邮件中的代码:

attachments.inline['blank'] = File.read("#{Rails.root.to_s + '/app/assets/images/blank_500x500.png'}")
attachments.inline['discount-deal-triangle'] = File.read("#{Rails.root.to_s + '/app/assets/images/discount-deal-triangle.png'}")
mail(:to => @subscriber.email, :subject => subject)

这是视图文件中的代码:

-if @image_url
  = image_tag( attachments['offer_image'].url, :id => 'offer_image', :width => "320", :height => "320")
-elsif @offer.image.nil?
  = image_tag( attachments['blank'].url, :id => 'offer_image', :width => "320", :height => "320")

为了简单起见,我省略了细节。

我做错了什么?

【问题讨论】:

    标签: ruby-on-rails ruby gmail actionmailer


    【解决方案1】:

    毕竟我找到了解决方案:您需要做的就是设置附件的 MIME 类型和编码。

    attachments.inline['blank'] = {
                                    :data => File.read("#{Rails.root.to_s + '/app/assets/images/blank_500x500.png'}"),
                                    :mime_type => "image/png",
                                    :encoding => "base64"
                                  }
    attachments.inline['discount-deal-triangle'] = {
                                    :data => File.read("#{Rails.root.to_s + '/app/assets/images/discount-deal-triangle.png'}"),
                                    :mime_type => "image/png",
                                    :encoding => "base64"
                                  }
    

    这对我有用。

    【讨论】:

      【解决方案2】:

      在内联数组中使用文件扩展名。示例:

      attachments.inline['blank.png'] = 
        File.read(Rails.root.join('app', 'assets', 'images', 'blank_500x500.png')
      

      这样 Rails 将猜测文件 mime_typeencoding。至少 Rails 4.2 会这样做。

      你也可以参考https://stackoverflow.com/a/25810153/2041318,在那里你可以找到邮件内嵌图片的好帮手方法。

      【讨论】:

        【解决方案3】:

        值得一提,因为我发现这个问题时的问题是相同的,但根本原因不同。

        如果您正在运行 Rails 4 并且在 Gmail 中显示图像时遇到问题(但在 Outlook365 或 OSX 邮件客户端中没有),请确保您没有尝试显示 .svg 文件。在我写这篇文章的日期,Gmail 不支持它们,你需要一个 .jpg.png 后备。

        【讨论】:

        • 我遇到了这个问题,但我使用的是 .jpg 图片,所以它们是 Outlook,而不是 Gmail 或 Office 365。你知道为什么吗?
        • .jpg 应该被所有邮件客户端支持。您是否检查过您的邮件客户端没有因为信任问题而隐藏您的内容? SMTP 可以触发内容筛选的限制。
        猜你喜欢
        • 1970-01-01
        • 2018-09-24
        • 2020-04-09
        • 1970-01-01
        • 2017-01-30
        • 2011-10-06
        • 1970-01-01
        • 2016-12-01
        • 1970-01-01
        相关资源
        最近更新 更多