Kingsman How To: Customize Mailer Templates
Important: These docs are for the outdated Jets 5 versions and below. For the latest Jets docs: docs.rubyonjets.com
Different Ways to Change Templates
There are many different ways to change the mailer template text. We’ll cover a few of them.
Mailer Templates
❯ jets generate kingsman:views -v mailer create app/views/kingsman/mailer create app/views/kingsman/mailer/confirmation_instructions.html.erb create app/views/kingsman/mailer/email_changed.html.erb create app/views/kingsman/mailer/password_change.html.erb create app/views/kingsman/mailer/reset_password_instructions.html.erb create app/views/kingsman/mailer/unlock_instructions.html.erb
This copies over the templates internally from the kingsman gem to your app. Keep the views you want to customize and remove the ones you don’t need. For example, you do not need the generated shared views for mailers.
rm -rf app/views/kingsman/shared
Let’s say you only want to customize the reset password instruction template. That’ll be the only one you’ll keep.
app/views/kingsman/mailer/reset_password_instructions.html.erb
Internationalization YAML File
We can adjust all en.kingsman.mailer.confirmation_instructions
settings config/locales/en.yml. Sometimes, that may be enough for your needs. If it’s not, using custom mailers can help.
Custom Mailer Class
app/mailers/custom_kingsman_mailer.rb
class CustomMailer < Kingsman::Mailer
# Prepend the subject with My Website
def subject_for(key)
"My Website " + super
end
end
This will change the subject of the emails sent by Kingsman so that they are prefixed with “My Website “.
Configure kingsman initializer so it’ll use the CustomMailer
config/initializers/kingsman.rb
Kingsman.setup do |config|
config.mailer_sender = 'noreply@boltops.com'
# ...
config.mailer = 'CustomMailer'
end
Here’s source code of the Kingsman::Mailer. Reading it can help understand how else you can customize the mailer and templates.