Customizable Email sender address with Devise
David Paluy

David Paluy @dpaluy

About: "Of course, I'm an optimist - I don't see much point in being anything else."

Location:
Austin, TX
Joined:
Mar 15, 2019

Customizable Email sender address with Devise

Publish Date: Aug 19 '20
6 0

When installing the devise gem in your Rails application, you will find the following:

Devise.setup do |config|
  # ...
  config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com'
  # ...
end
Enter fullscreen mode Exit fullscreen mode

You can set static email, for example:

Devise.setup do |config|
  # ...
  config.mailer_sender = 'Acme Team <team@acme.com>'
  # ...
end
Enter fullscreen mode Exit fullscreen mode

But if you need to allow your back-office team member periodically to customize this parameter, how would you do this?

I recommend using rails-settings gem.

class Setting < RailsSettings::Base
  field :email_from, type: :string, default: 'Acme Team <team@acme.com>'
end
Enter fullscreen mode Exit fullscreen mode

Now, if you try adding this Setting.email_from to devise.rb initializer, you will get an error: You cannot use settings before Rails initialize. (RuntimeError).

To solve this problem, do the following:

Devise.setup do |config|
  # ...
  config.mailer_sender = ->(_devise_mapping) { SiteConfig.email_from }
  # ...
end
Enter fullscreen mode Exit fullscreen mode

Happy Hacking!

Comments 0 total

    Add comment