DEV Community

matt swanson
matt swanson

Posted on • Originally published at boringrails.com on

7 3

Improving your Rails mailers with `email_address_with_name`

In almost all email programs, you can add a display name before your email address like so:

To: Matt Swanson <matt@example.com>
Enter fullscreen mode Exit fullscreen mode

It’s a small touch, but it is a more human-readable way of addressing an email. Rails provides a helper utility to format email addresses in this style without resorting to manual string manipulation.

Usage

Use email_address_with_name to add a name in-front on an email address in a standard way

ActionMailer::Base.email_address_with_name("swan3788@gmail.com", "Matt Swanson")
=> "Matt Swanson <swan3788@gmail.com>"
Enter fullscreen mode Exit fullscreen mode

This helper is available in all Rails mailers.

class UserMailer < ApplicationMailer
  default from: 'notifications@example.com'

  def welcome_email
    @user = params[:user]

    mail(
      to: email_address_with_name(@user.email, @user.display_name),
      subject: 'You have a new message'
    )
  end
end
Enter fullscreen mode Exit fullscreen mode

Options

This helper handles nil gracefully as well.

ActionMailer::Base.email_address_with_name("swan3788@gmail.com", nil)
=> "swan3788@gmail.com"
Enter fullscreen mode Exit fullscreen mode

And it handles escaping characters automatically:

ActionMailer::Base.email_address_with_name("mike@example.com", "Michael J. Scott")
=> "\"Michael J. Scott\" <mike@example.com>"

ActionMailer::Base.email_address_with_name("chip@example.com", 'John "Chip" Smith')
=> "\"John \\\"Chip\\\" Smith\" <chip@example.com>"
Enter fullscreen mode Exit fullscreen mode

Additional Resources

Rails API: ActionMailer::Base#email_address_with_name


Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (1)

Collapse
 
m90 profile image
Frederik Ring

This is only tangential, but do you know if this kind of email address format is somehow specified / named? I was recently looking for libraries that would handle such addresses for me (outside of Rails) and had to come up with my own version. I still have the suspicion though I just don't know the proper name.

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →