tutorial rails example ruby-on-rails ruby-on-rails-4 actionmailer

ruby on rails - example - Rails Action Mailer: imágenes en correos electrónicos



sendgrid devise mailer (5)

Estoy tratando de pegar imágenes en el correo electrónico. El problema son los correos electrónicos que vienen sin imágenes dentro.

desarrollo.rb

config.action_mailer.default_url_options = { :host => ''localhost:3000'', :only_path => false } config.action_mailer.raise_delivery_errors = false config.action_mailer.asset_host = ''http://localhost:3000''

ver archivo:

<div class="image"> <%= image_tag image_path(''email-logo.png'') %> </div>

¿Dónde me equivoqué? Por favor pregunta si necesitas más información.


Está enviando correos electrónicos desde localhost:3000 , que no está disponible públicamente (y está limitado únicamente a su máquina).

Debe exponer su entorno local para que las imágenes se puedan descargar en su cliente de correo.

Utilice el servicio como ngrok para exponer su dominio local.

Una vez hecho esto, asegúrese de reemplazar config.action_mailer.asset_host = ''http://localhost:3000''

con la URL ngrok (algo como config.action_mailer.asset_host = ''http://<xxx>.ngrok.com'' )

Además, en el archivo de vista, deberá asegurarse de especificar la URL absoluta para la imagen (y no solo la ruta relativa). Puede leer más sobre eso aquí: ¿Cómo obtengo una URL absoluta para un activo en Rails 3.1?


Estoy de acuerdo con Utsav Kesharwani. Recientemente me enfrenté al mismo problema. Como el localhost no está disponible públicamente, no puede acceder a las imágenes de localhost.

Por lo tanto, una solución práctica para este problema puede ser cargar sus imágenes en la nube y acceder a ellas cuando desee visualizar esas imágenes.

Personalmente prefiero Cloudinary : un servicio basado en la nube que proporciona una solución de gestión de imágenes de extremo a extremo que incluye cargas, almacenamiento, manipulaciones, optimizaciones y entrega.

Puede consultar la documentación de Cloudinary para los rieles: http://cloudinary.com/documentation/rails_integration#getting_started_guide

Espero que esto ayude.


No soy un gurú de los rieles, pero encontré este:

  1. ponga su imagen email-logo.png dentro de la carpeta pública del proyecto Rails;
  2. en su correo electrónico (por ejemplo, views / devise / mailer / my_email.html.erb, establezca la etiqueta de imagen de esta manera:

    <%= image_tag("http://#{ActionMailer::Base.default_url_options[:host]}:#{ActionMailer::Base.default_url_options[:port]}/email-logo.png") %>


Si usa el

image_url(''e-mail-logo.png'')

en lugar de

image_path()

renderizará la ruta absoluta a la imagen, que debería funcionar. La ruta interna a la imagen no tiene sentido en el contexto del mensaje.


tratar

<div class="image"> <%= image_tag(''email-logo.png'') %> </div>

Asegúrate de configurar config.action_controller.asset_host y config.action_mailer.asset_host