我最近把我所有的应用程序资产都搬到了CDN上,一切都很好。所有图像都加载在视图中。但我的问题是,我的图片没有载入电子邮件,我是从我的申请发送。我也在my CDN Path文件中指定了production.rb,但仍然无法工作。当我在电子邮件中查看那个图像时,我甚至没有得到该图像的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 #:mailhopperAssetsCdn类:
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蒂娅。
发布于 2016-05-05 09:11:57
action_mailer.assets_host不接受协议相关URL。相反,URL必须从像http://或https://这样的协议开始。
这有点道理,因为通常电子邮件不是在浏览器中打开的,而且电子邮件客户端无法像浏览器那样从专利html文档继承协议。
https://stackoverflow.com/questions/37019945
复制相似问题