Send Email with Ruby on Rails
To send an email message from a Ruby on Rails app:
First, create a mailer for use in your application.
- Open a terminal or command prompt window.
- From your Rail application's home directory, run ./script/generate mailer MyMailer.
Configuration
Configure the mailer for your system.
- Open config/environment.rb in a text editor.
- Add the following to the bottom of the file:
config.action_mailer.delivery_method = :smtp
ActionMailer::Base.server_settings = {
:address => "smtp.example.com",
:port => 25,
:user_name => "username",
:password => "password",
:authentication => :plain
}
Adjust the settings for your needs. If your SMTP server does not require authentication, remove the :user_name, :password and :authentication lines altogether. For more options, see the ActionMailer::Base class documentation.
A Method for a Message
It's high time to create the method in the MyMailer class that sets the stage for messages being sent.
- Open app/models/my_mailer.rb in an editor.
- Add the following method:
def mail(recipient)
@from "sender.address@example.com"
@recipients recipient
@subject "Hi #{recipient}"
@body(:recipient => recipient)
end
The Message Template
The message body will be taken from an ActionView template, in which the body parameters from above are available.
- Create app/views/my_mailer/mail.rhtml and open it in a text editor.
- Type something like:
Hi <%= @recipient %>,
your inspirational thought for the day...
Creating and Sending a Message
Finally, call the (automatically generated) deliver_mail() class method from the desired controller:
- Open the desired controller .rb file in an editor.
- Add the following code to the desired method:
def email_sent
MyMailer::deliver_mail("recipient.address@example.com")
end
To send an email from vanilla Ruby, you can use the Net::SMTP class.

