0.0
No release in over 3 years
Low commit activity in last 3 years
Devise MailJet adds a MailJet option to devise that easily enables users to join your mailing list when they create an account.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Devise MailJet¶ ↑

Devise MailJet adds a MailJet option to devise that easily enables users to join your mailing list when they create an account.

Delayed Job is used automatically if your project uses it, and the mapping between list names and list ids is cached automatically.

Getting started¶ ↑

In your Gemfile, add devise_mailjet after devise:

gem "devise"
gem "devise_mailjet"  # Last officially released gem

In your User model, add :mailjet to the devise call and make :join_mailing_list accessible:

devise :database_authenticatable, ..., :mailjet
attr_accessor :join_mailing_list

In your mailjet initializer (config/initializers/mailjet.rb), set your API key and mailing list name:

Mailjet.configure do |config|
  config.api_key      = 'your_api_key'
  config.secret_key   = 'your_secret_key'
  config.default_from = 'you@example.com'
end

In your device initializer (config/initializers/device.rb), you can configue Mailjet specifics:

Devise.setup do |config|
   # other Devise config parameters...
   config.mailing_list_name = 'List Name'
   config.mailing_list_opt_in_by_default = false
end

If you are using the default Devise registration views, the Join Mailing List checkbox is added automatically, if not, either include the form partial in your new registration form:

<%= render :partial => "devise/shared/mailjet/form", :locals => {:form => f} %>

Or manually add a “Join Mailing List” checkbox to your new registration form:

<%= form.check_box :join_mailing_list %>

If you are using Simple Form, you can use:

<%= f.input :join_mailing_list, :as => :boolean %>

Configuration¶ ↑

Create an initializer, and set your MailJet API key. To generate a new API key, go to the account tab in your MailJet account and select API Keys & Authorized Apps, then add a key.

Mailjet.configure do |config|
  config.api_key      = 'your_api_key'
  config.secret_key   = 'your_secret_key'
  config.default_from = 'you@example.com'
end'

Create a mailing list, and set the mailing list name in the initializer. To create a MailJet list, from your account go to the Lists tab, then hit create list.

Devise.mailing_list_name = 'List Name'

Add options from the MailJet API Docs using the following code in user.rb model. For GROUPINGS, you can get the Group ID by clicking “import to” and looking at the URL us6.admin.mailjet.com/lists/members/import?id=1234&grp=9999&int=1

def mailjet_list_subscribe_options
  {'FNAME' => self.first_name, 'LNAME' => self.last_name, 'GROUPINGS'=> { 0 => {'id' => 9999, 'groups' => "Signed Up" } } }
end

For all the configuration settings, take a look at the model documenation.

Documentation¶ ↑

Full documentation is available at rdoc.info.

Demo Application¶ ↑

A demo application is available at github.

Example Usage¶ ↑

Users will join the default mailing list if join_mailing_list is set to true when the user is created. To manually add a user:

User.find(1).add_to_mailjet_list('Site Administrators List')

To manually remove a user:

User.find(1).remove_from_mailjet_list('Site Administrators List')

NOTE: You MUST have the users permission to add them to a mailing list.

Customization¶ ↑

To have the user join more than one list, or to override the lists that the user will join, override mailjet_lists_to_join in your model. Your method should return a single list, or an array of lists.

def mailjet_lists_to_join
  lists = ["Site Users List"]
  lists << "Site Admins List" if admin?
  return lists
end

If all users will join the same list or lists, just set the mailing_list_name configuration option.

Contributions¶ ↑

Please help this software improve by submitting pull requests, preferably with tests.

View our contributors.

Copyright © 2011 Justin Cunningham and 2014 Pierre Yager. See MIT_LICENSE for details.