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

2

来自 d11wtq 的评论

指定content_typetext/html

ActionMailer::Base.mail(
  content_type: "text/html",
  from: "sender@example.com",
  to: "your_email@example.com",
  subject: "This is a test",
  body: "<h2>HTML Email Test</h2><p>This is a <b>test</b>.</p>"
).deliver_now
于 2019-02-25T22:56:05.410 回答
1

在某些情况下,似乎 rails 可能会以某种方式缓存文本模板。

我只是

  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 回答
1

use <%=raw k %> or <%= k.html_safe %>

于 2012-07-17T21:53:20.597 回答