4

レールの使用 2.3.14

私のメール erb: data.html.erb:

<% @data.each do |error| %>
    <table>
        <% error.each_pair do |k, v| %>
            <tr>
                <td>
                    <%= k %>
                </td>
                <td>
                    <%= ap v %>
                </td>
            </tr>   
        <% end %>
    </table>
    <br />
<% end %>

電子メールを受信できますが、受信すると、HTML をレンダリングするのではなく、プレーン テキストとして表示されます。

アクション メーラーの設定:

config.action_mailer.raise_delivery_errors = true

# Send emails during development
config.action_mailer.perform_deliveries = true
ActionMailer::Base.delivery_method = :sendmail

更新:配信方法でコンテンツタイプを指定する必要がありました:

 def data(data, sent_at = Time.now)
    Time.zone = 'Eastern Time (US & Canada)'

    content_type 'text/html'
    subject     "[#{RAILS_ENV}] An error has occurred - #{Time.now.to_s("%B %d, %Y")}"
    recipients  "bugs@mydomain.com"
    from        AppConfig['from_email']
    sent_on     sent_at
    @body   =   {:data => data}
  end
4

3 に答える 3

1

<%= raw k%>または<%= k.html_safe%>を使用します

于 2012-07-17T21:53:20.597 に答える
1

特定の状況下では、レールが何らかの形でテキスト テンプレートをキャッシュしているように見えます。

私はちょうど

  1. 単一のビュー、テキスト ビューを備えた新しいメーラーを生成
  2. メーラーをテストし、テキストメールを送信しました
  3. テキストメールの名前を html に変更 (foo.text.haml -> foo.html.haml)
  4. メーラーを再テストした...そしてテキストメールを受け取った(ブー!)
  5. 新しい名前 (bar.html.haml) で、テキスト バージョンと一緒に HTML バージョンを作成しました。
  6. サーバーを再起動しました
  7. 再テスト済み (送信バー)。今回はHTMLメールが届きました。
  8. 元の HTML メール (foo) を再テストしました。HTMLメールを受け取りました

叫ぶ。

于 2014-01-20T17:14:27.013 に答える