2012-04-24 33 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。

相關問題