画像をメールに貼り付けようとしています。問題は、メールが画像なしで送信されることです
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>
どこで間違えましたか?詳細についてはお問い合わせください。
試す
<div class="image">
<%= image_tag('email-logo.png') %>
</div>
config.action_controller.asset_Host
およびconfig.action_mailer.asset_Host
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?
あなたが使用する場合
image_url('e-mail-logo.png')
の代わりに
image_path()
画像への絶対パスをレンダリングします。これは機能するはずです。画像への内部パスは、メッセージのコンテキストでは意味がありません。
私はRailsグルではありませんが、これを見つけました:
あなたのメール(例えば、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") %>
私はUtsav Kesharwaniに同意します。私は最近同じ問題に直面しました。 localhostは公開されていないため、localhostのイメージにはアクセスできません。
したがって、この問題に対する1つの実用的な解決策は、画像をクラウドにアップロードし、それらの画像を表示したいときにアクセスすることです。
私は個人的に好み Cloudinary -アップロード、ストレージ、操作、最適化、配信などのエンドツーエンドの画像管理ソリューションを提供するクラウドベースのサービス。
RailsのCloudinaryドキュメントを参照できます: http://cloudinary.com/documentation/Rails_integration#getting_started_guide
これがお役に立てば幸いです。