ruby-on-rails
  • ruby-on-rails-3.1
  • actionmailer
  • assets
  • asset-pipeline
  • 2011-09-27 18 views 6 likes 
    6

    我无法在邮件程序中使用任何形式的资产管道,无论是邮件程序本身还是视图。如何在Mailer中使用资产?

    以下产生并清空src图像标签。

    <%= image_tag "emails/header-general.png" %> 
    

    空图像标签看起来像这样:

    IMG ALT =“页眉一般”

    通过模型附加文件,并在视图中使用它的下列形式附加一个空图片。

    attachments.inline['header.jpg'] = 'emails/header-general.png' 
    ... 
    <%= image_tag attachments['header.png'] %> 
    

    我没有检查路径,甚至尝试了多条路径等,但没有运气。 请帮忙。在电子邮件中包含图片的任何形式都会有所帮助。

    这里是生产环境。

    Xenium::Application.configure do 
    # Settings specified here will take precedence over those in config/application.rb 
    
    # Code is not reloaded between requests 
    config.cache_classes = true 
    
    # Full error reports are disabled and caching is turned on 
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 
    
    # Disable Rails's static asset server (Apache or nginx will already do this) 
    config.serve_static_assets = false 
    
    # Compress JavaScripts and CSS 
    config.assets.compress = true 
    
    # Choose the compressors to use 
    config.assets.js_compressor = :yui 
    config.assets.css_compressor = :yui 
    
    # Don't fallback to assets pipeline if a precompiled asset is missed 
    config.assets.compile = true 
    
    # Generate digests for assets URLs 
    config.assets.digest = true 
    
    # Defaults to Rails.root.join("public/assets") 
    # config.assets.manifest = YOUR_PATH 
    
    # Specifies the header that your server uses for sending files 
    # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache 
    config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx 
    
    # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. 
    # config.force_ssl = true 
    
    # See everything in the log (default is :info) 
    config.log_level = :fatal 
    
    # Use a different logger for distributed setups 
    # config.logger = SyslogLogger.new 
    
    # Use a different cache store in production 
    config.cache_store = :mem_cache_store 
    
    # Enable serving of images, stylesheets, and JavaScripts from an asset server 
    #config.action_controller.asset_host = "http://asset.xenium.bg" 
    
    # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) 
    # config.assets.precompile += %w(search.js) 
    
    # Disable delivery errors, bad email addresses will be ignored 
    config.action_mailer.raise_delivery_errors = true 
    #config.action_mailer.perform_deliveries = true 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = { 
    :address    => "localhost", 
    :port     => 25, 
    :domain    => 'xenium.bg', 
    #:user_name   => '<username>', 
    #:password    => '<password>', 
    #:authentication  => 'plain', 
    :enable_starttls_auto => false 
    } 
    
    # Enable threaded mode 
    # config.threadsafe! 
    
    # Enable locale fallbacks for I18n (makes lookups for any locale fall back to 
    # the I18n.default_locale when a translation can not be found) 
    config.i18n.fallbacks = true 
    
    # Send deprecation notices to registered listeners 
    config.active_support.deprecation = :notify 
    end 
    

    谢谢!

    +0

    关于调试这个的一些常规技巧,这也会给你一些额外的信息来提出这个问题。 #1。如果您在普通的视图中显示相同的图像,它会显示吗?如果是这样,那么为图像生成的URL是什么? #2。在邮件程序版本中,src属性实际上是空白的?请包括您的问题中生成的img标签。 #3。在尝试使用不同的配置来解决这个问题时,要非常小心浏览器缓存。即使在解决问题后,您的浏览器仍可能会继续显示“空白”图像。 #4。作为此问题的一部分包含您的环境配置文件。 – cailinanne

    +0

    嗨,感谢您的评论。我编辑了我的问题以包含更多内容。没有缓存奇怪或别的东西。它似乎不工作 – YavorIvanov

    回答

    4

    按照2.3.3 Making Inline Attachments部分,创建内嵌附件,你会做如下

    attachments.inline['image.jpg'] = File.read('/path/to/image.jpg') 
    
    你的情况

    所以,它应该是

    attachments.inline['header.jpg'] = File.read("#{Rails.root}/app/assets/images/emails/header-general.png" 
    
    1

    集config.action_controller.asset_host和配置.action_mailer.asset_host,这个效果很好。

    config.action_mailer.asset_host = URL from where pick image 
    <%= image_tag image_path('logo.png') %> 
    
    相关问题