mandrill-mailer-rails 0.0.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +11 -0
- data/Gemfile.lock +3 -3
- data/README.md +2 -1
- data/Rakefile +2 -0
- data/lib/mandrill_action_mailer/delivery_handler.rb +12 -3
- data/mandrill-mailer-rails.gemspec +1 -1
- data/spec/integration/{deliver_handler_spec.rb → delivery_handler_spec.rb} +33 -2
- data/spec/rails_app/app/mailers/notifier.rb +7 -1
- data/spec/rails_app/config/environments/test.rb +2 -0
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ccb76410ba8ced75c59ccaaf95161ae650d88547
|
4
|
+
data.tar.gz: d60a21170dcad2539c6b1a4b4a2fac9a73153d15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5687dd3dad2725d6954c44b34ea868c9df7ea4cc7eca8f97041972bfcd3c3b8290643df7568a133253949ba53cf6d55101d5a63c71c362f71d863822f9409dbb
|
7
|
+
data.tar.gz: 6dd8e0991af1cbcfec672aea0fa24649a02ef826d2a3851f991c70d105ee88248d76c9e5ec0367cec99663373c95e9948af1ec4fc9fc69e4a369ab1d905468f3
|
data/.travis.yml
ADDED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
mandrill-mailer-rails (0.0
|
4
|
+
mandrill-mailer-rails (1.0.0)
|
5
5
|
mandrill-api
|
6
6
|
rails (> 3.0)
|
7
7
|
|
@@ -42,7 +42,7 @@ GEM
|
|
42
42
|
builder (3.2.2)
|
43
43
|
diff-lcs (1.2.5)
|
44
44
|
erubis (2.7.0)
|
45
|
-
excon (0.
|
45
|
+
excon (0.42.1)
|
46
46
|
hike (1.2.3)
|
47
47
|
i18n (0.6.11)
|
48
48
|
json (1.8.1)
|
@@ -51,7 +51,7 @@ GEM
|
|
51
51
|
mandrill-api (1.0.52)
|
52
52
|
excon (>= 0.16.0, < 1.0)
|
53
53
|
json (>= 1.7.7, < 2.0)
|
54
|
-
mime-types (2.4.
|
54
|
+
mime-types (2.4.3)
|
55
55
|
minitest (5.4.2)
|
56
56
|
multi_json (1.10.1)
|
57
57
|
rack (1.5.2)
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
module MandrillActionMailer
|
2
2
|
class DeliveryHandler
|
3
|
-
attr_accessor :settings
|
3
|
+
attr_accessor :settings, :result
|
4
4
|
|
5
5
|
MIME_TYPES = {
|
6
6
|
:html => "text/html",
|
7
7
|
:text => "text/plain"
|
8
8
|
}.freeze
|
9
9
|
|
10
|
+
FULL_EMAIL_REGEX = /\A\s*(.+?)\s*<\s*(?:[^>]+)\s*>\s*\z/
|
11
|
+
|
10
12
|
def initialize(options={})
|
11
|
-
self.settings = {
|
13
|
+
self.settings = {
|
14
|
+
:track_opens => MandrillActionMailer.config.track_opens,
|
15
|
+
:track_clicks => MandrillActionMailer.config.track_clicks
|
16
|
+
}.merge(options)
|
12
17
|
end
|
13
18
|
|
14
19
|
def deliver!(message)
|
@@ -21,7 +26,11 @@ module MandrillActionMailer
|
|
21
26
|
}
|
22
27
|
|
23
28
|
if !(message[:from_name].nil? || message[:from_name].value.blank?)
|
29
|
+
# If a from name is set, use it.
|
24
30
|
message_payload[:from_name] = message[:from_name].value
|
31
|
+
elsif !(message[:from_email].nil?) && (m = FULL_EMAIL_REGEX.match(message[:from_email].value))
|
32
|
+
# If no from name is set, check to see if they set it in the email field.
|
33
|
+
message_payload[:from_name] = m[1]
|
25
34
|
end
|
26
35
|
|
27
36
|
if !message.reply_to.blank?
|
@@ -38,7 +47,7 @@ module MandrillActionMailer
|
|
38
47
|
message_payload[format] = content.to_s unless content.blank?
|
39
48
|
end
|
40
49
|
|
41
|
-
MandrillActionMailer.client.messages.send(message_payload)
|
50
|
+
self.result = MandrillActionMailer.client.messages.send(message_payload)
|
42
51
|
end
|
43
52
|
|
44
53
|
private
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe 'MandrillActionMailer::
|
3
|
+
describe 'MandrillActionMailer::DeliveryHandler' do
|
4
4
|
let(:client) { double('Mandrill::API') }
|
5
5
|
let(:sender) { double('Mandrill::Messages') }
|
6
6
|
|
@@ -41,6 +41,25 @@ describe 'MandrillActionMailer::DeliverHandler' do
|
|
41
41
|
Notifier.test.deliver
|
42
42
|
end
|
43
43
|
|
44
|
+
context 'delivery method accessors' do
|
45
|
+
before do
|
46
|
+
expect(sender).to receive(:send).and_return 'foo' => 'bar'
|
47
|
+
@mail = Notifier.test.deliver
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'should have settings for `track_opens`' do
|
51
|
+
expect(@mail.delivery_method.settings[:track_opens]).to eq true
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should have settings for `track_clicks`' do
|
55
|
+
expect(@mail.delivery_method.settings[:track_clicks]).to eq false
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should have response from mandrill api in `result`' do
|
59
|
+
expect(@mail.delivery_method.result).to eq 'foo' => 'bar'
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
44
63
|
it 'should set the subject' do
|
45
64
|
expect(sender).to receive(:send).with(
|
46
65
|
hash_including(
|
@@ -73,7 +92,7 @@ describe 'MandrillActionMailer::DeliverHandler' do
|
|
73
92
|
it 'should set the from_name field' do
|
74
93
|
expect(sender).to receive(:send).with(
|
75
94
|
hash_including(
|
76
|
-
:from_name => Notifier::
|
95
|
+
:from_name => Notifier::FROM_NAME
|
77
96
|
)
|
78
97
|
)
|
79
98
|
|
@@ -81,6 +100,18 @@ describe 'MandrillActionMailer::DeliverHandler' do
|
|
81
100
|
end
|
82
101
|
end
|
83
102
|
|
103
|
+
context 'when the from_email contains a name' do
|
104
|
+
it 'should set the from_name field' do
|
105
|
+
expect(sender).to receive(:send).with(
|
106
|
+
hash_including(
|
107
|
+
:from_name => Notifier::FROM_NAME
|
108
|
+
)
|
109
|
+
)
|
110
|
+
|
111
|
+
Notifier.test_from_email_with_name.deliver
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
84
115
|
it 'should set the to field' do
|
85
116
|
expect(sender).to receive(:send).with(
|
86
117
|
hash_including(
|
@@ -2,6 +2,8 @@ class Notifier < ActionMailer::Base
|
|
2
2
|
TO = 'to@example.org'
|
3
3
|
MANY_TO = [TO, 'to2@example.org']
|
4
4
|
FROM = 'from@example.org'
|
5
|
+
FROM_NAME = 'From Name'
|
6
|
+
FROM_EMAIL_WITH_NAME = "#{FROM_NAME} <#{FROM}>"
|
5
7
|
SUBJECT = 'Test Subject'
|
6
8
|
REPLY_TO = 'reply@example.org'
|
7
9
|
BCC = 'bcc@example.org'
|
@@ -21,7 +23,11 @@ class Notifier < ActionMailer::Base
|
|
21
23
|
end
|
22
24
|
|
23
25
|
def test_from_name
|
24
|
-
mail from_name:
|
26
|
+
mail from_name: FROM_NAME, template_name: 'test'
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_from_email_with_name
|
30
|
+
mail from_email: FROM_EMAIL_WITH_NAME, template_name: 'test'
|
25
31
|
end
|
26
32
|
|
27
33
|
def to_many
|
@@ -30,6 +30,8 @@ TestRailsApp::Application.configure do
|
|
30
30
|
# The :test delivery method accumulates sent emails in the
|
31
31
|
# ActionMailer::Base.deliveries array.
|
32
32
|
config.action_mailer.delivery_method = :mandrill
|
33
|
+
config.mandrill_action_mailer.track_opens = true
|
34
|
+
config.mandrill_action_mailer.track_clicks = false
|
33
35
|
|
34
36
|
# Print deprecation notices to the stderr.
|
35
37
|
config.active_support.deprecation = :stderr
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mandrill-mailer-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tinfoil Security, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mandrill-api
|
@@ -102,6 +102,7 @@ extensions: []
|
|
102
102
|
extra_rdoc_files: []
|
103
103
|
files:
|
104
104
|
- .gitignore
|
105
|
+
- .travis.yml
|
105
106
|
- Appraisals
|
106
107
|
- Gemfile
|
107
108
|
- Gemfile.lock
|
@@ -123,7 +124,7 @@ files:
|
|
123
124
|
- lib/mandrill_action_mailer/delivery_handler.rb
|
124
125
|
- lib/mandrill_action_mailer/railtie.rb
|
125
126
|
- mandrill-mailer-rails.gemspec
|
126
|
-
- spec/integration/
|
127
|
+
- spec/integration/delivery_handler_spec.rb
|
127
128
|
- spec/rails_app/.gitignore
|
128
129
|
- spec/rails_app/Rakefile
|
129
130
|
- spec/rails_app/app/mailers/notifier.rb
|
@@ -165,12 +166,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
166
|
version: '0'
|
166
167
|
requirements: []
|
167
168
|
rubyforge_project:
|
168
|
-
rubygems_version: 2.4.
|
169
|
+
rubygems_version: 2.4.5
|
169
170
|
signing_key:
|
170
171
|
specification_version: 4
|
171
172
|
summary: Handler for Rails to send emails through Mandrill
|
172
173
|
test_files:
|
173
|
-
- spec/integration/
|
174
|
+
- spec/integration/delivery_handler_spec.rb
|
174
175
|
- spec/rails_app/.gitignore
|
175
176
|
- spec/rails_app/Rakefile
|
176
177
|
- spec/rails_app/app/mailers/notifier.rb
|