emails - html not rendering


i am using ruby 1.8.7 and rails 2.3.3 i can send emails using gmail smtp my config is:

ActionMailer::Base.raise_delivery_errors = true ActionMailer::Base.perform_deliveries = true ActionMailer::Base.delivery_method = :smtp ActionMailer::Base.default_charset = 'utf-8' ActionMailer::Base.smtp_settings = {   :enable_starttls_auto => true,   :address => "",   :port => 587,   :domain => "",   :authentication => :plain,   :user_name => "",   :password => "bla",   :default_content_type => "text/html" }

I am composing email using tiny mce editor On sending it..

I see it on gmail as <html><p>lndglds</p> <p>sfglfs</p> <p>&nbsp;</p></html>

instead of the html rendered.

Does any one kno why?

how do you send the email? Is there a controller action that sends the email?


Controller Code   def sendmail     recipient = params[:email][:recipient]     subject = params[:email][:subject]     message = params[:email][:message]     cc = ""     Emailer.deliver_contact(recipient, subject, message, "Administrator", cc)     if request.xhr?       flash[:notice] = 'Error sending message. Please try again later.'     else       flash[:notice] = 'Message sent successfully!'     end     redirect_to :back   rescue     flash[:notice] = 'Error sending message. Please try again later.'     redirect_to :back   end

Which goes to Model code

def contact(recipient, subject, message, sent_by, cc, sent_at =       @subject = subject       @cc = cc       @recipients = recipient       @sent_by = sent_by       @from = ''       @sent_on = sent_at       @body["title"] = 'This is title'       @body["email"] = ''        @body["message"] = message       @headers = {}    end

Can anyone please advise on how to send emails in HTML format instead of plain text?

Next time, try reading the documentation first. From the ActionMailer::Base docs:

To send mail as HTML, make sure your view (the .erb file) generates HTML and set the content type to html.   class MyMailer < ActionMailer::Base     def signup_notification(recipient)       recipients recipient.email_address_with_name       subject "New account information"       from ""       body :account => recipient       content_type "text/html"     end   end

--Matt Jones

Thank you.

Ritvvij wrote:

Can anyone please advise on how to send emails in HTML format instead of plain text?

Just don't. HTML belongs on Web pages, not in e-mail.

(If you really need to, I believe you will have to set a content header on the e-mail so that the HTML is parsed. But there are few good reasons to send HTML mail in the first place.)


If you want to send a HTML email have a look at the Rails documentation it is very well documented. Here is a snip:

Mailer views are located in the app/views/name_of_mailer_class directory. The specific mailer view is known to the class because it’s name is the same as the mailer method. So for example, in our example from above, our mailer view for the welcome_email method will be in app/views/user_mailer/welcome_email.text.html.erb for the HTML version and welcome_email.text.plain.erb for the plain text version.

The action mailer basics should have all you need...

But the short version is in the naming of the views text.html.erb and text.plain.erb and then you have the content_type that can be set too "text/html", Rails send multipart emails if you have a text and html view.