Chapter 19. Mail in Rails

Prior to email, our private correspondence was secured by a government institution called the postal service. Today, we trust AOL, Microsoft, Yahoo, Facebook, or Gmail with our private utterances.

John Battelle

Most of Rails is built around HTTP, but there will be times you also want to send or receive email messages. Thanks to the ActionMailer system, it’s almost as easy to send and receive mail messages as it is to send and receive information over HTTP. Because mail systems are separate from Rails, there’s still some difficulty in connecting Rails to mail servers, but you can at least get started pretty easily. If you would like to code along with this chapter, make a copy of ch09/students03 and start there.

Sending Mail Messages

Telling Rails to send email messages requires putting a little bit of infrastructure in place, creating views specifying what the messages should say, and telling Rails when to send what. Except that it’s an extra piece that goes outside the usual HTTP context, it’s not very difficult.

First, you need to generate a mailer:

$ rails generate mailer AwardMailer
    create  app/mailers/award_mailer.rb
    invoke  erb
    create    app/views/award_mailer
    invoke  test_unit
    create    test/mailers/award_mailer_test.rb
    create    test/mailers/previews/award_mailer_preview.rb

Alongside the assets, controllers, and models directories within the app directory, Rails has provided us with the mailers directory. Mailers aren’t really models, controllers, ...

Get Learning Rails 5 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.