2012-04-24 98 views
3

使用Rails 2.3.14如何使用ActionMailer发送html电子邮件?

我的电子邮件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 "[email protected]" 
    from  AppConfig['from_email'] 
    sent_on  sent_at 
    @body = {:data => data} 
    end 
+1

如果您在收件箱中查看电子邮件的来源,Content-Type标头将显示什么内容? – d11wtq 2012-04-24 14:47:44

+0

text/plain;字符集= UTF-8。我如何制作html? – NullVoxPopuli 2012-04-24 14:50:51

+0

它应该“只是工作”。你是否100%在目录中没有data.text.erb模板?您是否在邮件程序中手动调用任何渲染方法? – d11wtq 2012-04-24 14:56:30

回答

0

使用<(%)=原始k%>或<%= k.html_safe %>

1

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

我只是

  1. 生成一个单一视图,文本视图
  2. 测试邮件发送新邮件和发送文本电子邮件
  3. 改名为文本格式的电子邮件为HTML(foo.text.haml ! - > foo.html.haml)
  4. 重新测试邮件...并得到了文本邮件(BOO)
  5. 创建的HTML版本,旁边的文字版本使用新名称(bar.html.haml)
  6. 重新启动服务器
  7. 重新测试(发送栏)。这次有一个HTML电子邮件。
  8. 重新测试了原始的html电子邮件(foo)。得到了HTML电子邮件

cray。