Try throwing your code away and write it again using ActionMailer guide. The reason can be as Frederick suggested but also your code doesn't look very rails 3 way ;).
The first thing that comes to my mind is how you pass body and content type. Body can be just variable which you will use in view and content type will be set automatically based on what views are defined.
I would write something like:
class MessageSender < ActionMailer::Base
def send_message(subject, to, from, body)
# @sent_on = Time.now
@body = body
mail(:to => to, :subject => subject, :from => from)
end
end
Then to render a view:
# app/views/message_sender/send_message.text.erb
My nice text email.
And my body is <%= @body %>
As you can read in the guide, you can also create html version as app/views/message_sender/send_message.text.erb
.