Rails HTML Email Displays HTML code

actionmailer, email, html, ruby-on-rails-3

Solution

You appear to be missing the content-type:

def registration_confirmation(user)
  @user = user
  subject       "Welcome #{@user.first_name}!"
  from          "info@foobar.com"
  recipients    @user.email
  sent_on       Time.now

  # Set content-type header
  content_type "text/html"
end

It defaults to `text/plain`, so you must explicitly set it for an HTML or multipart message.

Problem

I'm working on an html welcome email to new users, but it's not working. When I send it, it's displaying the html code as text, as opposed to rendering the actual html. I made the html of my template starting with a template from Mailchimp, so I'm surprised it doesn't work. Also, when I send the email using Putsmail.com and emailonacid.com, it looks fine. However, in production, the email sends and the html appears as text in the email, like so (from registration_confirmation.html.erb): ``` <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0" style="width: 100% !important; -webkit-text-size-adjust: none !important; background-color: #ffa500 !important; margin: 0; padding: 0;" bgcolor="#ffa500"> <center> <table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" id="backgroundTable" style="height: 100% !important; width: 100% !important; margin: 0; padding: 0;"> <tr> <td align="center" valign="top"> <!-- // Begin Template Preheader \\ --> <table border="0" cellpadding="10" cellspacing="0" width="600" id="templatePreheader" style="background-color: #ffa500;" bgcolor="#ffa500"> <tr> <td valign="top" class="preheaderContent"> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tr> <td valign="top"> <div mc:edit="std_preheader_content" style="color: #505050; font-family: Arial; font-size: 10px; line-height: 100%; text-align: left;" align="left"> </div> </td> <td valign="top" width="180"> <div mc:edit="std_preheader_links" style="color: #505050; font-family: Arial; font-size: 10px; line-height: 100%; text-align: left;" align="left"> </div> </td> </tr> </table> </td> </tr> </table> <table border="0" cellpadding="0" cellspacing="0" width="600" id="templateContainer" style="background-color: #ffffff; border: 1px solid #dddddd;" bgcolor="#ffffff"> <tr> <td align="center" valign="top"> <table border="0" cellpadding="10" cellspacing="0" width="600" id="templateBody"> <tr> <td valign="top" class="bodyContent" style="background-color: #ffffff;" bgcolor="#ffffff"> <table border="0" cellpadding="10" cellspacing="0" width="100%"> <tr> <td> <a href="http://foobar.com"> <img src="https://s3.amazonaws.com/images/email_logo.gif" style="float:right;" alt="logo" /> </a> </td> </tr> <tr> <td valign="top"> <div mc:edit="std_content00" style="color: #505050; font-family: Arial; font-size: 14px; line-height: 150%; text-align: left;" align="left"> <span class="h2" style="color: #202020; display: block; font-family: Arial; font-size: 22px; font-weight: bold; line-height: 100%; margin-bottom: 10px; text-align: left;">Welcome to <%= user.name %>!</span> Thanks for registering!<br /><br /> </div> </td> </tr> </table> </td> </tr> </table> </td> </tr> <tr> <td align="center" valign="top"> <table border="0" cellpadding="10" cellspacing="0" width="600" id="templateFooter" style="background-color: #FDFDFD; border-top-width: 0;" bgcolor="#FDFDFD"> <tr> <td valign="top" class="footerContent"></td> </tr> </table> </td> </tr> </table> <br> </td> </tr> </table> </center> <style type="text/css"> body { width: 100% !important; } body { -webkit-text-size-adjust: none !important; } body { margin: 0 !important; padding: 0 !important; } img { border: none !important; font-size: 14px !important; font-weight: bold !important; height: auto !important; line-height: 100% !important; outline: none !important; text-decoration: none !important; text-transform: capitalize !important; } #backgroundTable { height: 100% !important; margin: 0 !important; padding: 0 !important; width: 100% !important; } body { background-color: #FAFAFA !important; } .preheaderContent div a:visited { color: #336699 !important; font-weight: normal !important; text-decoration: underline !important; } .headerContent a:visited { color: #336699 !important; font-weight: normal !important; text-decoration: underline !important; } .bodyContent div a:visited { color: #336699 !important; font-weight: normal !important; text-decoration: underline !important; } .footerContent div a:visited { color: #336699 !important; font-weight: normal !important; text-decoration: underline !important; } body { background-color: #ffa500 !important; } </style> ``` My mailer: ``` def registration_confirmation(user) @user = user subject "Welcome #{@user.first_name}!" from "info@foobar.com" recipients @user.email sent_on Time.now end ``` Called from the user registration model: ``` Notifier.registration_confirmation(user).deliver ```

Original source