2016-05-04 10 views
3

最近、すべてのアプリ資産をCDNに移動してすべて正常に動作しています。すべての画像がビューに読み込まれています。しかし、私の問題は、イメージが私のアプリケーションから送信している電子メールに読み込まれていないことです。 production.rbファイルにmy CDN Pathを指定しましたが、まだ動作しません。その画像を電子メールで調べると、その画像にはsrcも届かなかった。CDNのメールで画像が読み込まれないホストのURL URL:

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クラス:

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。

+0

@spickermann私は、js、css、およびimageファイルの動的URLを生成するために1つのクラスを使用しています。したがって、production.rbでは、そのクラスのオブジェクトを作成しています。ビューですべてが正常に動作しています。電子メールでは表示されません。私は電子メールでそのイメージへのリンクを取得していません。空の画像タグが – anusha

+0

@spickermann:Logoのように表示されています。私はメールで画像を取得しています。 – anusha

+0

@spickermannクラス名がAssetsCDNであると仮定して、prodcution.rbでそのクラスを呼び出しています。 'config.action_mailer。 asset_host = AssetsCDN.new'である。私たちは画像のパスでURLを生成しています – anusha

答えて

1

action_mailer.assets_hostは、プロトコルの相対URLを受け入れません。代わりに、URLはhttp://またはhttps://のようなプロトコルで始まる必要があります。

通常、電子メールはブラウザで開かれず、電子メールクライアントはブラウザのように特許html文書からプロトコルを継承することができないため、意味があります。

関連する問題