A long-lived project that still receives updates
Effective Email Templates provides an admin access to modify email templates
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
 Dependencies
 Project Readme

Effective Email Templates

Create email templates that an admin can edit and then send.

Rails 3.2.x through Rails 6

effective_email_templates 1.0

This is the 1.0 series of effective_email_templates.

This requires Twitter Bootstrap 4.

Please check out Effective Email Templates 0.x for more information using this gem with Bootstrap 3.

Getting Started

Add to your Gemfile:

gem 'haml-rails' # or try using gem 'hamlit-rails'
gem 'effective_email_templates'

Run the bundle command to install it:

bundle install

Then run the generator:

rails generate effective_email_templates:install

The generator will install an initializer which describes all configuration options and creates a database migration.

If you want to tweak the table name (to use something other than the default 'email_templates'), manually adjust both the configuration file and the migration now.

Then migrate the database:

rake db:migrate

And import the provided welcome email template:

rake effective_email_templates:import

Admin View

To manage the content of the email templates, navigate to /admin/email_templates or add,

link_to 'Email Templates', effective_email_templates.admin_email_templates_path to your menu.

Create Email Templates

The installer already created an app/mailers/email_templates_mailer.rb. You can change this name. And additional mailers can be created, just make sure they extend from Effective::EmailTemplatesMailer.

To create an email template:

  1. Create a method inside the mailer, like def welcome. The @assigns instance variable should contain all the variables that are passed to the liquid view. Any variables that end in _url like root_url will be automatically expanded.
# app/mailers/email_templates_mailer.rb
class EmailTemplatesMailer < Effective::EmailTemplatesMailer
  def welcome(user)
    @assigns = {
      user: {
        first_name: user.first_name,
        last_name: user.last_name
      }
      adjective: 'awesome'
    }

    mail(to: user.email)
  end
end
  1. Create a .liquid file in app/views/email_templates_mailer/welcome.liquid.
---
subject: 'Welcome {{ user.first_name }}'  # REQUIRED
from: 'admin@example.com'               # REQUIRED
cc: 'info@example.com'                  # optional
bcc: 'info@example.com'                 # optional
---
Welcome {{ user.first_name }} {{ user.last_name }}!

I am a liquid template that is imported to the database, and is then editable.

Thanks for using our site at {{ root_url }}.
  1. Run rake effective_email_templates:import or rake effective_email_templates:overwrite
  • Remember to do this in your staging and production environments as well!

  • The import task can be run even when no new templates have been added and will not overwrite existing database templates. This allows you to run the rake task in a deploy script if you are adding new templates frequently.

  1. Send the emails like normal:
EmailTemplatesMailer.welcome(user).deliver

Authorization

All authorization checks are handled via the effective_resources gem found in the config/initializers/effective_resources.rb file.

Permissions

To allow a user to see the admin area, using CanCan:

can [:index, :edit, :update, :destroy], Effective::EmailTemplate
can :admin, :effective_email_templates

License

MIT License. Copyright Code and Effect Inc.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Bonus points for test coverage
  6. Create new Pull Request