1. ホーム
  2. ruby-on-rails

[解決済み] Rails Action Mailer:メールに画像を表示する

2022-03-13 23:36:43

質問

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

開発.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>

どこに間違いがあったのか?もっと情報が必要な場合は、お尋ねください。

解決方法は?

からメールを送信しています。 localhost:3000 は、一般には公開されていない(自分のマシンだけに限定されている)。

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

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

この後、必ず config.action_mailer.asset_host = 'http://localhost:3000'

を ngrok の URL に置き換えてください(以下のようなものです)。 config.action_mailer.asset_host = 'http://<xxx>.ngrok.com' )

また、ビューファイルでは、画像の絶対パスを指定する必要があります(相対パスだけでなく)。これについては、こちらで詳しく説明しています。 Rails 3.1 でアセットの絶対 URL を取得するには?