Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Ruby JavaScript CSS
branch: master
Failed to load latest commit information.
app update line heights for headers
config added unsubscribe link to templates, and corresponding subscribers co…
lib bump version
script switched to rspec from test unit
spec better error handling for unsubscribe
.gitignore switched to rspec from test unit
Gemfile created mailer, archives controller, tests, and initializer for dummy…
Gemfile.lock bump version
MIT-LICENSE initial commit
Rakefile added unsubscribe link to templates, and corresponding subscribers co…
maktoub.gemspec added license



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'



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 => '')

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.
# you would access the newsletter at:
mount Maktoub::Engine => "/"


Send a pull request including documentation changes and tests.

To do

  • integrate with TravisCI

  • create github page for project

  • allow management of multiple lists

  • allow rendering of newletter from remotely hosted views (e.g. S3)

Something went wrong with that request. Please try again.