web-dev-qa-db-ja.com

Railsアクションメーラー:メール内の画像

画像をメールに貼り付けようとしています。問題は、メールが画像なしで送信されることです

development.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'

ファイルを閲覧する:

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

どこで間違えましたか?詳細についてはお問い合わせください。

23
Pavel Babin

試す

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

config.action_controller.asset_Hostおよびconfig.action_mailer.asset_Host

21
a14m

localhost:3000からメールを送信していますが、これは一般公開されていません(ご使用のマシンに限定されています)。

メールクライアントに画像をダウンロードできるように、ローカル環境を公開する必要があります。

ngrok のようなサービスを使用して、ローカルドメインを公開します。

完了したら、必ずconfig.action_mailer.asset_Host = 'http://localhost:3000'を置き換えてください

ngrok URL(config.action_mailer.asset_Host = 'http://<xxx>.ngrok.com'など)

また、ビューファイルでは、(相対パスだけでなく)画像の絶対URLを指定する必要があります。詳しくはこちらをご覧ください: Rails 3.1?

9

あなたが使用する場合

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

の代わりに

image_path()

画像への絶対パスをレンダリングします。これは機能するはずです。画像への内部パスは、メッセージのコンテキストでは意味がありません。

3
oxtub

私はRailsグルではありませんが、これを見つけました:

  1. 画像email-logo.pngをRailsプロジェクトのパブリックフォルダー内に配置します。
  2. あなたのメール(例えば、views/devise/mailer/my_email.html.erb)で、イメージタグを次のように設定します。

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

私はUtsav Kesharwaniに同意します。私は最近同じ問題に直面しました。 localhostは公開されていないため、localhostのイメージにはアクセスできません。

したがって、この問題に対する1つの実用的な解決策は、画像をクラウドにアップロードし、それらの画像を表示したいときにアクセスすることです。

私は個人的に好み Cloudinary -アップロード、ストレージ、操作、最適化、配信などのエンドツーエンドの画像管理ソリューションを提供するクラウドベースのサービス。

RailsのCloudinaryドキュメントを参照できます: http://cloudinary.com/documentation/Rails_integration#getting_started_guide

これがお役に立てば幸いです。

0
VoidZero