mandrill_mailer 0.4.6 → 0.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -13
- data/CHANGELOG.md +3 -0
- data/README.md +58 -27
- data/lib/mandrill_mailer/template_mailer.rb +24 -4
- data/lib/mandrill_mailer/version.rb +1 -1
- data/spec/template_mailer_spec.rb +21 -0
- metadata +17 -17
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
NGJjZGVhNTUyMThkZDlmOGJmNGVlZTM4ZGI4NGEzOTA1MDU1ZDA5MA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f6f21a3380bcccadc130ad1ff2a66165d9cdb651
|
4
|
+
data.tar.gz: 961a5ec4b5d339801a96738ea82eb0b892117dc3
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NTFmNjliZDU5MmZiZWU0Yzk3ZGNmZGU4MDNmNDI0MDgzYTk5YzZmNmYzNTQ2
|
11
|
-
MzAxNzFjYzQ1NGFkMjEyOTZlNDAzODIyZTczNmQzYjMzMjIyNTQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MGJkOWE4YmJhNDIzNzIzNzRkZDA0Njk5N2U4NjFiOTRjYzcyM2NiYTUzZjgz
|
14
|
-
MjUyMzc2ZjIzM2U0ZmQ1ZmQ3OTdmZjdhNDJjMWVhZDIyYjVmOTQ4MDFlNjkz
|
15
|
-
MmVhYTY5ZWQxMDA4NzJmYTU3YjMwNzIxMDY2Zjk3MWIxZjY2ZTI=
|
6
|
+
metadata.gz: 4cb947f8485c7b951ac24fb2fa2dd3f6d800bb7a6ed8a58718003e4eeb8ab79ebdb64626bdde4ae292a343c8d4378d8341bde7644091c7477454e9fae31cc3f2
|
7
|
+
data.tar.gz: 8d6a445d241f073487eb0275bd7399481d8e9881ac1a463fa30efd1d941bd9837b49bcd6737bca7312526ef02de36447fab1c57f866d02115bd4aaeea2a3d1cf
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,14 +1,31 @@
|
|
1
|
-
# Mandrill Mailer
|
2
|
-
|
3
|
-
|
1
|
+
# Mandrill Mailer
|
2
|
+
[](rubygems.org/gems/mandrill_mailer)
|
3
|
+
[](https://codeclimate.com/github/renz45/mandrill_mailer)
|
4
|
+
[](https://gemnasium.com/renz45/mandrill_mailer)
|
4
5
|
|
5
|
-
|
6
|
-
|
6
|
+
Inherit the MandrillMailer class in your existing Rails mailers to send transactional emails through Mandrill using their template-based emails.
|
7
|
+
|
8
|
+
## Installation
|
9
|
+
Add this line to your application's Gemfile:
|
10
|
+
|
11
|
+
```
|
12
|
+
gem 'mandrill_mailer'
|
13
|
+
```
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
```
|
18
|
+
$ bundle install
|
19
|
+
```
|
20
|
+
|
21
|
+
Or install it yourself as:
|
7
22
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
23
|
+
```
|
24
|
+
$ gem install mandrill_mailer
|
25
|
+
```
|
26
|
+
|
27
|
+
## Usage
|
28
|
+
Add the following to your `mail.rb` in your Rails app's `config/initializers` directory:
|
12
29
|
|
13
30
|
```ruby
|
14
31
|
ActionMailer::Base.smtp_settings = {
|
@@ -25,25 +42,37 @@ MandrillMailer.configure do |config|
|
|
25
42
|
end
|
26
43
|
```
|
27
44
|
|
28
|
-
|
45
|
+
You don't need to add the ActionMailer stuff unless you're still using ActionMailer emails.
|
46
|
+
|
47
|
+
This uses the Mandrill SMTP servers. If you're using template-based emails
|
48
|
+
through the Mandrill API you only need the `MandrillMailer.configure` portion.
|
29
49
|
|
30
|
-
|
31
|
-
|
50
|
+
Do not forget to setup the environment (`ENV`) variables on your server instead
|
51
|
+
of hardcoding your Mandrill username and password in the `mail.rb` initializer.
|
32
52
|
|
33
|
-
`
|
53
|
+
You will also need to set `default_url_options` for the mailer, similar to ActionMailer
|
54
|
+
in your environment config files in `config/environments`:
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
config.mandrill_mailer.default_url_options = { :host => 'localhost' }
|
58
|
+
```
|
34
59
|
|
35
60
|
## Creating a new mailer
|
36
|
-
Creating a new Mandrill
|
61
|
+
Creating a new Mandrill mailer is similar to a typical Rails one:
|
37
62
|
|
38
63
|
```ruby
|
39
64
|
class InvitationMailer < MandrillMailer::TemplateMailer
|
40
65
|
default from: 'support@example.com'
|
41
66
|
|
42
67
|
def invite(invitation)
|
43
|
-
|
68
|
+
# in this example `invitation.invitees` is an Array
|
69
|
+
invitees = invitation.invitees.map { |invitee| { email: invitee.email, name: invitee.name } }
|
70
|
+
|
71
|
+
mandrill_mail template: 'group-invite',
|
44
72
|
subject: I18n.t('invitation_mailer.invite.subject'),
|
45
|
-
to:
|
46
|
-
# to:
|
73
|
+
to: invitees,
|
74
|
+
# to: invitation.email,
|
75
|
+
# to: { email: invitation.email, name: 'Honored Guest' },
|
47
76
|
vars: {
|
48
77
|
'OWNER_NAME' => invitation.owner_name,
|
49
78
|
'PROJECT_NAME' => invitation.project_name
|
@@ -60,34 +89,36 @@ class InvitationMailer < MandrillMailer::TemplateMailer
|
|
60
89
|
end
|
61
90
|
end
|
62
91
|
end
|
63
|
-
|
92
|
+
```
|
64
93
|
|
65
94
|
* `#default:`
|
66
95
|
* `:from` - set the default from email address for the mailer
|
67
96
|
* `:from_name` - set the default from name for the mailer. If not set, defaults to from email address. Setting :from_name in the .mandrill_mail overrides the default.
|
68
97
|
|
69
98
|
* `.mandrill_mail`
|
70
|
-
* `:template`(required) - Template
|
99
|
+
* `:template`(required) - Template slug from within Mandrill (for backwards-compatibility, the template name may also be used but the immutable slug is preferred)
|
71
100
|
|
72
101
|
* `:subject` - Subject of the email. If no subject supplied, it will fall back to the template default subject from within Mandrill
|
73
102
|
|
74
|
-
* `:to`(required) - Accepts an email String, or
|
75
|
-
|
103
|
+
* `:to`(required) - Accepts an email String, a Hash with :name and :email keys, or an Array of Hashes with :name and :email keys
|
104
|
+
- examples:
|
105
|
+
1. `'example@domain.com'`
|
106
|
+
2. `{ email: 'someone@email.com', name: 'Bob Bertly' }`
|
107
|
+
3. `[{ email: 'someone@email.com', name: 'Bob Bertly' }, { email: 'other@email.com', name: 'Claire Nayo' }]`
|
76
108
|
|
77
109
|
* `:vars` - A Hash of merge tags made available to the email. Use them in the
|
78
|
-
email by wrapping them in
|
79
|
-
by doing: `*|OWNER_NAME|*` in the email template within Mandrill
|
110
|
+
email by wrapping them in `*||*`. For example `{'OWNER_NAME' => 'Suzy'}` is used by doing: `*|OWNER_NAME|*` in the email template within Mandrill
|
80
111
|
|
81
|
-
* `:recipient_vars` - Similar to `:vars`, this is a Hash of merge
|
112
|
+
* `:recipient_vars` - Similar to `:vars`, this is a Hash of merge vars specific to a particular recipient.
|
82
113
|
Use this if you are sending batch transactions and hence need to send multiple emails at one go.
|
83
114
|
ex. `[{'someone@email.com' => {'INVITEE_NAME' => 'Roger'}}, {'another@email.com' => {'INVITEE_NAME' => 'Tommy'}}]`
|
84
115
|
|
85
116
|
* `:template_content` - A Hash of values and content for Mandrill editable content blocks.
|
86
117
|
In MailChimp templates there are editable regions with 'mc:edit' attributes that look
|
87
|
-
|
118
|
+
like: `<div mc:edit="header">My email content</div>` You can insert content directly into
|
88
119
|
these fields by passing a Hash `{'header' => 'my email content'}`
|
89
120
|
|
90
|
-
* `:headers` - Extra headers to add to the message (currently only Reply-To and X
|
121
|
+
* `:headers` - Extra headers to add to the message (currently only `Reply-To` and `X-*` headers are allowed) {"...": "..."}
|
91
122
|
|
92
123
|
* `:bcc` - Add an email to bcc to
|
93
124
|
|
@@ -116,7 +147,7 @@ end
|
|
116
147
|
|
117
148
|
* `:images` - An array of embedded images to add to the message:
|
118
149
|
* `file:` This is the actual file, it will be converted to byte data in the mailer
|
119
|
-
* `filename:` The Content ID of the image - use
|
150
|
+
* `filename:` The Content ID of the image - use `<img src="cid:THIS_VALUE">` to reference the image in your HTML content
|
120
151
|
* `mimetype:` The MIME type of the image - must start with "image/"
|
121
152
|
|
122
153
|
* `:async` - Whether or not this message should be sent asynchronously
|
@@ -7,9 +7,12 @@
|
|
7
7
|
# default from: 'support@codeschool.com'
|
8
8
|
|
9
9
|
# def invite(invitation)
|
10
|
+
# invitees = invitation.invitees.map { |invitee| { email: invitee.email, name: invitee.name } }
|
11
|
+
#
|
10
12
|
# mandrill_mail template: 'Group Invite',
|
11
13
|
# subject: I18n.t('invitation_mailer.invite.subject'),
|
12
|
-
# to:
|
14
|
+
# to: invitees,
|
15
|
+
# # to: invitation.email
|
13
16
|
# # to: { email: invitation.email, name: invitation.recipient_name }
|
14
17
|
# vars: {
|
15
18
|
# 'OWNER_NAME' => invitation.owner_name,
|
@@ -38,8 +41,17 @@
|
|
38
41
|
|
39
42
|
# :subject(required) - Subject of the email
|
40
43
|
|
41
|
-
# :to(required) - Accepts an email String,
|
42
|
-
#
|
44
|
+
# :to(required) - Accepts an email String, a Hash with :name and :email keys
|
45
|
+
# or an Array of Hashes with :name and :email keys
|
46
|
+
# examples:
|
47
|
+
# 1)
|
48
|
+
# 'example@domain.com`
|
49
|
+
# 2)
|
50
|
+
# { email: 'someone@email.com', name: 'Bob Bertly' }
|
51
|
+
# 3)
|
52
|
+
# [{ email: 'someone@email.com', name: 'Bob Bertly' },
|
53
|
+
# { email: 'other@email.com', name: 'Claire Nayo' }]
|
54
|
+
#
|
43
55
|
|
44
56
|
# :vars - A Hash of merge tags made available to the email. Use them in the
|
45
57
|
# email by wrapping them in '*||*' vars: {'OWNER_NAME' => 'Suzy'} is used
|
@@ -108,13 +120,21 @@ module MandrillMailer
|
|
108
120
|
# default from: 'foo@bar.com'
|
109
121
|
#
|
110
122
|
# Returns options
|
123
|
+
def self.defaults
|
124
|
+
@defaults || super_defaults
|
125
|
+
end
|
126
|
+
|
127
|
+
def self.super_defaults
|
128
|
+
superclass.defaults if superclass.respond_to?(:defaults)
|
129
|
+
end
|
130
|
+
|
111
131
|
def self.default(args)
|
112
132
|
@defaults ||= {}
|
113
133
|
@defaults[:from] ||= 'example@email.com'
|
114
134
|
@defaults.merge!(args)
|
115
135
|
end
|
116
136
|
class << self
|
117
|
-
|
137
|
+
attr_writer :defaults
|
118
138
|
end
|
119
139
|
|
120
140
|
# Public: setup a way to test mailer methods
|
@@ -329,6 +329,27 @@ describe MandrillMailer::TemplateMailer do
|
|
329
329
|
klassA.mandrill_mail({vars: {}}).message['from_name'].should eq 'ClassA'
|
330
330
|
klassB.mandrill_mail({vars: {}}).message['from_name'].should eq 'ClassB'
|
331
331
|
end
|
332
|
+
|
333
|
+
it 'should use defaults from the parent class' do
|
334
|
+
klassA = Class.new(MandrillMailer::TemplateMailer) do
|
335
|
+
default from_name: 'ClassA'
|
336
|
+
end
|
337
|
+
klassB = Class.new(klassA) do
|
338
|
+
end
|
339
|
+
|
340
|
+
klassB.mandrill_mail({vars:{}}).message['from_name'].should eq 'ClassA'
|
341
|
+
end
|
342
|
+
|
343
|
+
it 'should allow overriding defaults from the parent' do
|
344
|
+
klassA = Class.new(MandrillMailer::TemplateMailer) do
|
345
|
+
default from_name: 'ClassA'
|
346
|
+
end
|
347
|
+
klassB = Class.new(klassA) do
|
348
|
+
default from_name: 'ClassB'
|
349
|
+
end
|
350
|
+
|
351
|
+
klassB.mandrill_mail({vars:{}}).message['from_name'].should eq 'ClassB'
|
352
|
+
end
|
332
353
|
end
|
333
354
|
|
334
355
|
describe '#respond_to' do
|
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mandrill_mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adam Rensel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: actionpack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mandrill-api
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 1.0.9
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.0.9
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
description: Transactional Mailer for Mandrill
|
@@ -87,8 +87,8 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
-
- .gitignore
|
91
|
-
- .rspec
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
92
|
- CHANGELOG.md
|
93
93
|
- Gemfile
|
94
94
|
- README.md
|
@@ -113,17 +113,17 @@ require_paths:
|
|
113
113
|
- lib
|
114
114
|
required_ruby_version: !ruby/object:Gem::Requirement
|
115
115
|
requirements:
|
116
|
-
- -
|
116
|
+
- - ">="
|
117
117
|
- !ruby/object:Gem::Version
|
118
118
|
version: '0'
|
119
119
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
|
-
- -
|
121
|
+
- - ">="
|
122
122
|
- !ruby/object:Gem::Version
|
123
123
|
version: '0'
|
124
124
|
requirements: []
|
125
125
|
rubyforge_project:
|
126
|
-
rubygems_version: 2.
|
126
|
+
rubygems_version: 2.2.2
|
127
127
|
signing_key:
|
128
128
|
specification_version: 4
|
129
129
|
summary: Transactional Mailer for Mandrill
|