A simple newsletter engine for Rails
Ruby HTML JavaScript CSS
Latest commit 20d6a0d Aug 5, 2015 @zawaideh zawaideh Merge pull request #12 from brunoocasali/feature/guidelines-improvements
Feature: Rubocop Guidelines Improvements
Failed to load latest commit information.
app removed all rubocop offences Aug 4, 2015
config starting the refactor using the rubcop principles Aug 4, 2015
lib fixed specs about &block and rubocop offence! Aug 4, 2015
script removed all rubocop offences Aug 4, 2015
spec Merge branch 'master' of github.com:Sandglaz/maktoub into feature/gui… Aug 5, 2015
.gitignore starting the refactor using the rubcop principles Aug 4, 2015
.rubocop.yml removed all rubocop offences Aug 4, 2015
.travis.yml fixed travis yml Aug 5, 2015
CHANGELOG.rdoc Update CHANGELOG.rdoc Jun 26, 2015
Gemfile starting the refactor using the rubcop principles Aug 4, 2015
MIT-LICENSE initial commit Oct 19, 2011
README.md Update Travis Badge Aug 5, 2015
Rakefile starting the refactor using the rubcop principles Aug 4, 2015



Build Status

Maktoub is a Ruby on Rails engine for email newsletters.

  • Write your newsletter as you would write any view (erb partial)
  • Maktoub sends your email in multipart as both html and text


  # Add this line to your Gemfile
  gem 'maktoub'

Then bundle install


Compatible with Rails 4+. For Rails 3.1+ use version 0.3.1



You can run rails generate maktoub:config to generate the configuration file. This task creates a matkoub.rb initializer file (in config/initializer) Follow instructions inside the file to configure it the way you want.


Create a newsletter as a normal view partial in app/views/maktoub/newsletters/. The subject of the newsletter will be automatically deduced from the partial's name.

Editing Styles

Create a view partial in app/views/layouts/maktoub/_styles.erb. Note that this completely overrides the styles that come with maktoub. You can copy the built-in styles and override them.

Sending messages

Maktoub comes with two rake tasks to allow you to:

  • send a test message to the "from" address of your newsletter.

    rake maktoub:test['name_of_my_newsletter_partial']
  • publish the newsletter to all your subscribers. If you have delayed_job installed then it will use it to deliver each email as a background job

    rake maktoub:mail['name_of_my_newsletter_parial']

Alternatively you have access to a Maktoub::NewsletterMailer ActionMailer object with a publish method

   Maktoub::NewsletterMailer.publish('my_newsletter_partial', name: 'User name', email: 'user@example.com')

View in browser

To be able to view your newsletter in a browser add it to routes.rb.

  • mount the engine at a path of your choice. e.g. mount Maktoub::Engine => '/'
  • you would access the newsletter at: http://example.com/<mounted_path>/newsletter/my_awesome_newletter


Send a pull request including documentation changes and tests.


  • create github page for project
  • allow management of multiple lists
  • allow rendering of newletter from remotely hosted views (e.g. S3)