6

Tengo problemas para utilizar cualquier forma de canalización de activos en el programa de correo, ya sea el programa de correo o la vista.¿Cómo puedo usar activos dentro de Mailer?

Lo siguiente produce y vacía la etiqueta de la imagen src.

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

La etiqueta de imagen vacía se ve así:

img alt = "Header General"

La siguiente forma de adjuntar un archivo a través del modelo y su uso en la vista adjunta un vacío imagen.

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

Revisé el camino e incluso lo intenté con varias rutas, etc. pero sin suerte. Por favor ayuda. Cualquier forma de incluir una imagen dentro del correo electrónico sería útil.

Aquí está el env de producción.

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 

¡Gracias!

+0

Algunos consejos generales sobre la depuración de esto, que también le daría algo de información adicional para poner en esta cuestión. # 1. Si muestra la misma imagen en una vista simple, ¿se muestra? Si es así, ¿cuál es la URL generada para la imagen? # 2. En la versión de correo, el atributo src está en blanco? Por favor, incluya la etiqueta img que se generó en su pregunta. # 3. Tenga mucho cuidado con el almacenamiento en caché del navegador mientras prueba diferentes configuraciones para solucionarlo. Su navegador puede continuar mostrando una imagen "vacía" incluso después de haber solucionado el problema. # 4. Incluya el archivo de configuración de su entorno como parte de esta pregunta. – cailinanne

+0

Hola, gracias por el comentario. Edité mi pregunta para incluir más cosas. No hay rareza de caché u otra cosa. Parece que no funciona – YavorIvanov

Respuesta

4

De acuerdo con la sección 2.3.3 Making Inline Attachments, para crear un archivo adjunto en línea que va a hacer de la siguiente manera

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

Así, en su caso, debe ser

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

conjunto config.action_controller.asset_host y config .action_mailer.asset_host y esto funciona bien.

config.action_mailer.asset_host = URL from where pick image 
<%= image_tag image_path('logo.png') %> 
Cuestiones relacionadas