dennismonsewicz
dennismonsewicz

Reputation: 25542

Rails 4: image_tag not working for images in emails

Here is the code I have:

<p><%= image_tag "/assets/logos/#{@company_name.downcase}_logo.jpg" %></p>

When the email is sent, and I view the email in my email client, the image is not showing up. It appears like a broken image

Anyone else run into this issue?

Here is my development.rb

MyApp::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb.

  # In the development environment your application's code is reloaded on
  # every request. This slows down response time but is perfect for development
  # since you don't have to restart the web server when you make code changes.
  config.cache_classes = false

  # Do not eager load code on boot.
  config.eager_load = false

  # Show full error reports and disable caching.
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send.
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger.
  config.active_support.deprecation = :log

  # Raise an error on page load if there are pending migrations
  config.active_record.migration_error = :page_load

  # Debug mode disables concatenation and preprocessing of assets.
  # This option may cause significant delays in view rendering with a large
  # number of complex assets.
  config.assets.debug = true

  config.action_controller.asset_host = 'localhost:3000'
  config.action_mailer.asset_host = 'http://localhost:3000'
end

Working code:

<p><%= image_tag("logos/#{@company_name.downcase}_logo.jpg") %></p>

Upvotes: 6

Views: 5679

Answers (2)

Omnia Magd
Omnia Magd

Reputation: 402

In contact mailer add image as an atachement

def sendCode(message,email)
 @message = "message: #{message} "
 attachments.inline['img1.png'] = File.read(Rails.root.join("public/emails", "img1.png"))
 attachments.inline['logo.png'] = File.read(Rails.root.join("public/emails", "logo.png"))
 mail(to: email, subject: 'Sample Email')
end

And in your html.erb file you can call the attachement image like that

<%= image_tag attachments['logo.png'].url, alt: 'image', class: 'photo' -%>

it will work with you

Upvotes: 0

babie
babie

Reputation: 1447

Problem is in http‌​://localhost:3000/lo‌​gos/elan_logo.jpg. Google will load image from this url to their cache. And https://ci5.googleusercontent.com/proxy/PnNleEdztcmZ97Y2pmx8‌​mwGjwF2hMIx9009CdiWd‌​TaQy4n_1LunBEB86hfud‌​oeFGYYzGDog0NQr6skhr‌​ftog=s0-d-e1-ft#http‌​://localhost:3000/lo‌​gos/elan_logo.jpg will display image correctly.

But Google can't access to localhost.

You should change config.action_mailer.asset_host = 'http://your_active_domain.com'

Upvotes: 1

Related Questions