图片未加载到 CDN 主机的电子邮件中 ​​url rails

Images not loading in emails with CDN Hosts url rails

我最近将我所有的应用程序资产都移到了 CDN,并且一切正常。所有图像都在视图中加载。但我的问题是我的图像没有加载到我从我的应用程序发送的电子邮件中。我也在 production.rb 文件中指定了 my CDN Path,但仍然无法正常工作。当我在电子邮件中查看该图片时,我什至没有收到该图片的 src

我正在使用 image_tag 加载图像。

谁能帮我解决这个问题:

Production.rb:

  config.action_controller.asset_host = AssetsCdn.new
  config.action_mailer.asset_host = AssetsCdn.new


 config.action_mailer.default_url_options = { :host => 'localhost', :protocol => 'http' } 
config.action_mailer.perform_deliveries = true   config.action_mailer.raise_delivery_errors = false   config.action_mailer.default :charset => "utf-8"  
config.action_mailer.delivery_method = :smtp #:mailhopper

AssetsCdn Class:

require 'zlib'
class AssetsCdn
  CSS_CDN   = "cdn-css"
  CSS_CDN_0 = "cdn-css0"
  CSS_CDN_1 = "cdn-css1"
  CSS_CDN_2 = "cdn-css2"

  JS_CDN    = "cdn-js"  
  JS_CDN_0  = "cdn-js0"
  JS_CDN_1  = "cdn-js1"
  JS_CDN_2  = "cdn-js2"  

  ASSETS_CDN   = "cdn-assets"
  ASSETS_CDN_0 = "cdn-assets0"
  ASSETS_CDN_1 = "cdn-assets1"
  ASSETS_CDN_2 = "cdn-assets2"
  ALL = [CSS_CDN_0, CSS_CDN_1, CSS_CDN_2, JS_CDN_0, JS_CDN_1, JS_CDN_2, ASSETS_CDN_0, ASSETS_CDN_1, ASSETS_CDN_2]

  def call(source, request = nil)
    cdn_index = Zlib.crc32(source) % 3
    if source.ends_with?('.css')
      url("#{CSS_CDN}#{cdn_index}", request)
    elsif source.ends_with?('.js')
      url("#{JS_CDN}#{cdn_index}", request)
    else  
      url("#{ASSETS_CDN}#{cdn_index}", request)
    end
  end

  def url(cdn_subdomain, request = nil)
      return "//#{cdn_subdomain}-#{localhost}:3000"
  end
end

TIA。

action_mailer.assets_host 不接受协议相关 URL。相反,URL 必须以 http://https:// 等协议开头。

这是有道理的,因为电子邮件通常不会在浏览器中打开,并且电子邮件客户端无法像浏览器那样从专利 html 文档中继承协议。