How do I send html emails with ActionMailer?
actionmailer, ruby, ruby-on-rails
Solution
From d11wtq's comment:
Specify the `content_type` as `text/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
Problem
Using rails 2.3.14 my email 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 %> ``` I can receive the email, but when I do, it displays as plain text -- rather than rendering the HTML. Action Mailer config: ``` config.action_mailer.raise_delivery_errors = true # Send emails during development config.action_mailer.perform_deliveries = true ActionMailer::Base.delivery_method = :sendmail ``` UPDATE: had to specify the content type in my delivery method: ``` 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 ```