首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有在电子邮件中加载CDN主机url rails的图像

没有在电子邮件中加载CDN主机url rails的图像
EN

Stack Overflow用户
提问于 2016-05-04 06:20:07
回答 1查看 681关注 0票数 2

我最近把我所有的应用程序资产都搬到了CDN上,一切都很好。所有图像都加载在视图中。但我的问题是,我的图片没有载入电子邮件,我是从我的申请发送。我也在my CDN Path文件中指定了production.rb,但仍然无法工作。当我在电子邮件中查看那个图像时,我甚至没有得到该图像的src

我正在使用image_tag加载我的图像。

有人能帮我一下吗?

Production.rb:

代码语言:javascript
复制
  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类:

代码语言:javascript
复制
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

蒂娅。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-05 09:11:57

action_mailer.assets_host不接受协议相关URL。相反,URL必须从像http://https://这样的协议开始。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37019945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档