mandrill-mailer-rails 0.0.1 → 1.0.0
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 +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
|