postmark-rails 0.16.0 → 0.21.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 +5 -5
- data/.gitignore +1 -0
- data/.travis.yml +63 -14
- data/.travis/setup.sh +13 -0
- data/CHANGELOG.rdoc +27 -0
- data/CONTRIBUTING.md +18 -0
- data/README.md +60 -178
- data/gemfiles/Gemfile.actionmailer-3.0.x +1 -1
- data/gemfiles/Gemfile.actionmailer-3.2.x +1 -1
- data/gemfiles/Gemfile.actionmailer-4.0.x +1 -1
- data/gemfiles/Gemfile.actionmailer-4.1.x +1 -1
- data/gemfiles/Gemfile.actionmailer-4.2.x +1 -1
- data/gemfiles/Gemfile.actionmailer-5.0.x +11 -0
- data/gemfiles/Gemfile.actionmailer-5.1.x +11 -0
- data/gemfiles/Gemfile.actionmailer-5.2.x +11 -0
- data/gemfiles/Gemfile.actionmailer-6.0.x +11 -0
- data/lib/postmark-rails.rb +13 -2
- data/lib/postmark-rails/preview_interceptor.rb +10 -0
- data/lib/postmark-rails/templated_mailer.rb +68 -0
- data/lib/postmark-rails/version.rb +1 -1
- data/postmark-rails.gemspec +5 -1
- data/postmark.png +0 -0
- data/spec/fixtures/models/test_mailer.rb +5 -0
- data/spec/fixtures/views/test_mailer/message_with_metadata.text.erb +1 -0
- data/spec/integration/delivery_spec.rb +9 -1
- data/spec/spec_helper.rb +9 -0
- data/spec/{postmark-rails_spec.rb → unit/postmark-rails_spec.rb} +0 -0
- data/spec/unit/preview_interceptor_spec.rb +40 -0
- data/spec/unit/templated_mailer_spec.rb +110 -0
- metadata +35 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 13b5d927c9a95b15fca7756699014d8d7c6aad06ca2c89393f146d730e643503
|
|
4
|
+
data.tar.gz: 44a410c53c18648827593cdc549997ee30d8fcca0ae11e8c9ac2c0a274ce8deb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7c779410e7e648223fe32a193ed602a2ee98c5050ec7fde4fa727e6c1090fa1757cb59dc9cf53a57bc6a9911f1579edf78fe945bdb9abf60e268c32ce6f9df95
|
|
7
|
+
data.tar.gz: 8c46978be1f750f5e088ee2d0ea2ca7b6d32d084611f05d5213387eb19db7a5526736bb6915a77bd9466b039121f1faf6d3f345d522ffbb509ea5fd28c7ffc4a
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
language: ruby
|
|
2
2
|
rvm:
|
|
3
|
-
- 1.8.7
|
|
4
|
-
- 1.9.3
|
|
5
3
|
- 2.0.0
|
|
6
|
-
- 2.1.
|
|
7
|
-
- 2.2.
|
|
4
|
+
- 2.1.10
|
|
5
|
+
- 2.2.10
|
|
6
|
+
- 2.3.8
|
|
7
|
+
- 2.4.5
|
|
8
|
+
- 2.5.3
|
|
9
|
+
- 2.6.0
|
|
10
|
+
- 2.7.0
|
|
8
11
|
script: bundle exec rake spec
|
|
9
12
|
gemfile:
|
|
10
13
|
- Gemfile
|
|
@@ -13,22 +16,68 @@ gemfile:
|
|
|
13
16
|
- gemfiles/Gemfile.actionmailer-4.0.x
|
|
14
17
|
- gemfiles/Gemfile.actionmailer-4.1.x
|
|
15
18
|
- gemfiles/Gemfile.actionmailer-4.2.x
|
|
19
|
+
- gemfiles/Gemfile.actionmailer-5.0.x
|
|
20
|
+
- gemfiles/Gemfile.actionmailer-5.1.x
|
|
21
|
+
- gemfiles/Gemfile.actionmailer-5.2.x
|
|
22
|
+
- gemfiles/Gemfile.actionmailer-6.0.x
|
|
16
23
|
matrix:
|
|
17
24
|
exclude:
|
|
18
|
-
- rvm: 1.8.7
|
|
19
|
-
gemfile: Gemfile
|
|
20
|
-
- rvm: 1.9.3
|
|
21
|
-
gemfile: Gemfile
|
|
22
25
|
- rvm: 2.0.0
|
|
23
26
|
gemfile: Gemfile
|
|
24
|
-
- rvm: 2.
|
|
27
|
+
- rvm: 2.0.0
|
|
28
|
+
gemfile: gemfiles/Gemfile.actionmailer-5.0.x
|
|
29
|
+
- rvm: 2.0.0
|
|
30
|
+
gemfile: gemfiles/Gemfile.actionmailer-5.1.x
|
|
31
|
+
- rvm: 2.0.0
|
|
32
|
+
gemfile: gemfiles/Gemfile.actionmailer-5.2.x
|
|
33
|
+
- rvm: 2.0.0
|
|
34
|
+
gemfile: gemfiles/Gemfile.actionmailer-6.0.x
|
|
35
|
+
|
|
36
|
+
- rvm: 2.1.10
|
|
25
37
|
gemfile: Gemfile
|
|
26
|
-
- rvm: 1.
|
|
38
|
+
- rvm: 2.1.10
|
|
39
|
+
gemfile: gemfiles/Gemfile.actionmailer-5.0.x
|
|
40
|
+
- rvm: 2.1.10
|
|
41
|
+
gemfile: gemfiles/Gemfile.actionmailer-5.1.x
|
|
42
|
+
- rvm: 2.1.10
|
|
43
|
+
gemfile: gemfiles/Gemfile.actionmailer-5.2.x
|
|
44
|
+
- rvm: 2.1.10
|
|
45
|
+
gemfile: gemfiles/Gemfile.actionmailer-6.0.x
|
|
46
|
+
|
|
47
|
+
- rvm: 2.2.10
|
|
48
|
+
gemfile: gemfiles/Gemfile.actionmailer-6.0.x
|
|
49
|
+
|
|
50
|
+
- rvm: 2.3.8
|
|
51
|
+
gemfile: gemfiles/Gemfile.actionmailer-6.0.x
|
|
52
|
+
|
|
53
|
+
- rvm: 2.4.5
|
|
54
|
+
gemfile: gemfiles/Gemfile.actionmailer-6.0.x
|
|
55
|
+
|
|
56
|
+
- rvm: 2.5.3
|
|
57
|
+
gemfile: gemfiles/Gemfile.actionmailer-3.0.x
|
|
58
|
+
- rvm: 2.5.3
|
|
59
|
+
gemfile: gemfiles/Gemfile.actionmailer-3.2.x
|
|
60
|
+
|
|
61
|
+
- rvm: 2.6.0
|
|
62
|
+
gemfile: gemfiles/Gemfile.actionmailer-3.0.x
|
|
63
|
+
- rvm: 2.6.0
|
|
64
|
+
gemfile: gemfiles/Gemfile.actionmailer-3.2.x
|
|
65
|
+
- rvm: 2.6.0
|
|
66
|
+
gemfile: gemfiles/Gemfile.actionmailer-4.0.x
|
|
67
|
+
- rvm: 2.6.0
|
|
68
|
+
gemfile: gemfiles/Gemfile.actionmailer-4.1.x
|
|
69
|
+
- rvm: 2.6.0
|
|
70
|
+
gemfile: gemfiles/Gemfile.actionmailer-4.2.x
|
|
71
|
+
|
|
72
|
+
- rvm: 2.7.0
|
|
73
|
+
gemfile: gemfiles/Gemfile.actionmailer-3.0.x
|
|
74
|
+
- rvm: 2.7.0
|
|
75
|
+
gemfile: gemfiles/Gemfile.actionmailer-3.2.x
|
|
76
|
+
- rvm: 2.7.0
|
|
27
77
|
gemfile: gemfiles/Gemfile.actionmailer-4.0.x
|
|
28
|
-
- rvm:
|
|
78
|
+
- rvm: 2.7.0
|
|
29
79
|
gemfile: gemfiles/Gemfile.actionmailer-4.1.x
|
|
30
|
-
- rvm:
|
|
80
|
+
- rvm: 2.7.0
|
|
31
81
|
gemfile: gemfiles/Gemfile.actionmailer-4.2.x
|
|
32
82
|
before_install:
|
|
33
|
-
-
|
|
34
|
-
- gem install bundler
|
|
83
|
+
- .travis/setup.sh
|
data/.travis/setup.sh
ADDED
data/CHANGELOG.rdoc
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
= Changelog
|
|
2
2
|
|
|
3
|
+
== 0.21.0
|
|
4
|
+
|
|
5
|
+
* Update minimum postmark gem dependency to avoid use of TLS v1
|
|
6
|
+
|
|
7
|
+
== 0.20.0
|
|
8
|
+
|
|
9
|
+
* Update the postmark gem dependency to 1.x
|
|
10
|
+
* Added support for Rails 6
|
|
11
|
+
* Dropped support for Ruby 1.8.7 and 1.9.3
|
|
12
|
+
* Added support for Ruby 2.7
|
|
13
|
+
|
|
14
|
+
== 0.19.0
|
|
15
|
+
|
|
16
|
+
* Update the postmark gem dependency to 1.15.x.
|
|
17
|
+
* Added support for templated mailers.
|
|
18
|
+
* Added source_code_uri to the gemspec.
|
|
19
|
+
* Tested against all stable versions of ActionMailer 3.0-5.2 and Ruby 1.8.7-2.6.0.
|
|
20
|
+
|
|
21
|
+
== 0.18.0
|
|
22
|
+
|
|
23
|
+
* Update the postmark gem dependency to 1.14.x.
|
|
24
|
+
|
|
25
|
+
== 0.17.0
|
|
26
|
+
|
|
27
|
+
* Add support for metadata.
|
|
28
|
+
* Update the postmark gem dependency to 1.13.x.
|
|
29
|
+
|
|
3
30
|
== 0.16.0
|
|
4
31
|
|
|
5
32
|
* Update the postmark gem dependency to 1.11.x.
|
data/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Before you report an issue or submit a pull request
|
|
2
|
+
|
|
3
|
+
*If you are blocked or need help with Postmark, please [contact
|
|
4
|
+
Postmark Support](https://postmarkapp.com/contact)*. For other, non-urgent
|
|
5
|
+
cases you’re welcome to report a bug and/or contribute to this project. We will
|
|
6
|
+
make our best effort to review your contributions and triage any bug reports in
|
|
7
|
+
a timely fashion.
|
|
8
|
+
|
|
9
|
+
If you’d like to submit a pull request:
|
|
10
|
+
|
|
11
|
+
* Fork the project.
|
|
12
|
+
* Make your feature addition or bug fix.
|
|
13
|
+
* Add tests for it. This is important to prevent future regressions.
|
|
14
|
+
* Do not mess with rakefile, version, or history.
|
|
15
|
+
* Update the CHANGELOG, list your changes under Unreleased.
|
|
16
|
+
* Update the README if necessary.
|
|
17
|
+
* Write short, descriptive commit messages, following the format used in therepo.
|
|
18
|
+
* Send a pull request. Bonus points for topic branches.
|
data/README.md
CHANGED
|
@@ -1,221 +1,93 @@
|
|
|
1
|
-
|
|
1
|
+
<a href="https://postmarkapp.com">
|
|
2
|
+
<img src="postmark.png" alt="Postmark Logo" title="Postmark" width="120" height="120" align="right">
|
|
3
|
+
</a>
|
|
4
|
+
|
|
5
|
+
# Postmark Rails Gem
|
|
2
6
|
|
|
3
7
|
[](https://travis-ci.org/wildbit/postmark-rails) [](https://codeclimate.com/github/wildbit/postmark-rails)
|
|
8
|
+
[](http://www.opensource.org/licenses/MIT)
|
|
9
|
+
[](https://badge.fury.io/rb/postmark-rails)
|
|
4
10
|
|
|
5
|
-
|
|
11
|
+
[Postmark](https://postmarkapp.com) allows you to send your emails with high delivery rates.
|
|
12
|
+
It also includes detailed statistics. In addition, Postmark can parse incoming emails which are forwarded back to your application.
|
|
6
13
|
|
|
7
|
-
|
|
14
|
+
The Postmark Rails Gem is a drop-in plug-in for ActionMailer to send emails via [Postmark](https://postmarkapp.com).
|
|
15
|
+
The gem has been created for fast implementation and fully supports all of [Postmark’s features](https://postmarkapp.com/why).
|
|
8
16
|
|
|
9
|
-
|
|
10
|
-
* Rails 4.x
|
|
11
|
-
* Rails 3.x
|
|
17
|
+
## Usage
|
|
12
18
|
|
|
13
|
-
|
|
19
|
+
Please see the [wiki](https://github.com/wildbit/postmark-rails/wiki) for detailed instructions about library features.
|
|
20
|
+
For details about Postmark API in general, please check out [Postmark developer docs](https://postmarkapp.com/developer).
|
|
14
21
|
|
|
15
|
-
##
|
|
16
|
-
|
|
17
|
-
Add `postmark-rails` to your Gemfile (change version numbers if needed) and run `bundle install`.
|
|
18
|
-
|
|
19
|
-
``` ruby
|
|
20
|
-
gem 'postmark-rails', '~> 0.15.0'
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
Save your Postmark API token to [config/secrets.yml](http://guides.rubyonrails.org/4_1_release_notes.html#config-secrets-yml).
|
|
22
|
+
## Requirements
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
```
|
|
24
|
+
You will need a Postmark account, server and sender signature (or verified domain) set up to use it.
|
|
25
|
+
For details about setup, check out [wiki pages](https://github.com/wildbit/postmark-rails/wiki/Getting-Started).
|
|
28
26
|
|
|
29
|
-
|
|
27
|
+
Also you will need a [postmark gem](https://github.com/wildbit/postmark-gem) version 1.0 and higher is required.
|
|
30
28
|
|
|
31
|
-
|
|
32
|
-
config.action_mailer.delivery_method = :postmark
|
|
33
|
-
config.action_mailer.postmark_settings = { :api_token => Rails.application.secrets.postmark_api_token }
|
|
34
|
-
```
|
|
29
|
+
### Supported Rails Versions
|
|
35
30
|
|
|
36
|
-
|
|
31
|
+
* Rails 6.0
|
|
32
|
+
* Rails 5.0
|
|
33
|
+
* Rails 4.x
|
|
34
|
+
* Rails 3.x
|
|
37
35
|
|
|
38
|
-
|
|
36
|
+
For Rails 2.3 please take a look at [version 0.4](https://github.com/wildbit/postmark-rails/tree/v0.4.2).
|
|
37
|
+
It may miss some new features, but receives all required bug fixes and other support if needed.
|
|
39
38
|
|
|
40
|
-
|
|
39
|
+
## Installation
|
|
41
40
|
|
|
42
|
-
|
|
41
|
+
Add `postmark-rails` to your Gemfile and run `bundle install`.
|
|
43
42
|
|
|
44
43
|
``` ruby
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def tagged_message
|
|
48
|
-
mail(
|
|
49
|
-
:subject => 'hello',
|
|
50
|
-
:to => 'sheldon@bigbangtheory.com',
|
|
51
|
-
:from => 'leonard@bigbangtheory.com',
|
|
52
|
-
:tag => 'my-tag',
|
|
53
|
-
:track_opens => 'true'
|
|
54
|
-
)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
end
|
|
44
|
+
gem 'postmark-rails'
|
|
58
45
|
```
|
|
59
46
|
|
|
60
|
-
## Sending attachments
|
|
61
47
|
|
|
62
|
-
You can also send file attachments with Postmark. Read our Developer docs for [additional information](http://developer.postmarkapp.com/developer-build.html#attachments).
|
|
63
48
|
|
|
64
|
-
|
|
49
|
+
## Rails 6
|
|
50
|
+
Save your Postmark Server API Token to [config/credentials.yml.enc](https://guides.rubyonrails.org/security.html#custom-credentials):
|
|
65
51
|
|
|
66
|
-
|
|
52
|
+
run `rails secret`, then run `rails credentials:edit` and add:
|
|
67
53
|
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
def message_with_attachment
|
|
72
|
-
attachments.inline['logo.png'] = File.read("/path/to/image") # Inline image
|
|
73
|
-
attachments['42.jpg'] = File.read("/path/to/file") # Attached file
|
|
74
|
-
mail(
|
|
75
|
-
:subject => 'hello',
|
|
76
|
-
:to => 'sheldon@bigbangtheory.com',
|
|
77
|
-
:from => 'leonard@bigbangtheory.com'
|
|
78
|
-
)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
end
|
|
54
|
+
``` yaml
|
|
55
|
+
postmark_api_token: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
|
82
56
|
```
|
|
83
|
-
|
|
84
|
-
## Sending in batches
|
|
85
|
-
|
|
86
|
-
While Postmark is focused on transactional email, we understand that developers
|
|
87
|
-
with higher volumes or processing time constraints need to send their messages
|
|
88
|
-
in batches. To facilitate this we provide a batching endpoint that permits you
|
|
89
|
-
to send up to 500 well-formed Postmark messages in a single API call.
|
|
57
|
+
Set Postmark as your preferred mail delivery method via `config/application.rb`:
|
|
90
58
|
|
|
91
59
|
``` ruby
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
messages = []
|
|
95
|
-
messages << DigestMailer.weekly_digest(@user1)
|
|
96
|
-
messages << DigestMailer.weekly_digest(@user2)
|
|
97
|
-
|
|
98
|
-
client.deliver_messages(messages)
|
|
99
|
-
|
|
100
|
-
messages.first.delivered?
|
|
101
|
-
# => true
|
|
102
|
-
|
|
103
|
-
messages.all?(&:delivered)
|
|
104
|
-
# => true
|
|
60
|
+
config.action_mailer.delivery_method = :postmark
|
|
61
|
+
config.action_mailer.postmark_settings = { api_token: Rails.application.credentials.postmark_api_token }
|
|
105
62
|
```
|
|
106
63
|
|
|
107
|
-
##
|
|
64
|
+
## Rails 3-5
|
|
65
|
+
Save your Postmark Server API token to [config/secrets.yml](http://guides.rubyonrails.org/4_1_release_notes.html#config-secrets-yml).
|
|
108
66
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
listed in the [postmark](https://github.com/wildbit/postmark-gem#error-handling) gem docs.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
### ActionMailer 5
|
|
115
|
-
|
|
116
|
-
For ActionMailer 5 and above, use `ActionMailer::Base.rescue_from` to define handlers for
|
|
117
|
-
each error you care about.
|
|
118
|
-
|
|
119
|
-
#### Example
|
|
120
|
-
|
|
121
|
-
``` ruby
|
|
122
|
-
class ApplicationMailer < ActionMailer::Base
|
|
123
|
-
default from: 'user@example.org'
|
|
124
|
-
layout 'mailer'
|
|
125
|
-
|
|
126
|
-
rescue_from Postmark::InactiveRecipientError, with: :reactivate_and_retry
|
|
127
|
-
|
|
128
|
-
private
|
|
129
|
-
|
|
130
|
-
def postmark_client
|
|
131
|
-
::Postmark::ApiClient.new(ActionMailer::Base.postmark_settings[:api_token],
|
|
132
|
-
ActionMailer::Base.postmark_settings.except(:api_token))
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
# This is just an example. Sometimes you might not want to reactivate
|
|
137
|
-
# an address that hard bounced.
|
|
138
|
-
# Warning: Having too many bounces can affect your delivery reputation
|
|
139
|
-
# with email providers
|
|
140
|
-
def reactivate_and_retry(error)
|
|
141
|
-
Rails.logger.info("Error when sending #{message} to #{error.recipients.join(', ')}")
|
|
142
|
-
Rails.logger.info(error)
|
|
143
|
-
|
|
144
|
-
error.recipients.each do |recipient|
|
|
145
|
-
bounce = postmark_client.bounces(emailFilter: recipient).first
|
|
146
|
-
next unless bounce
|
|
147
|
-
postmark_client.activate_bounce(bounce[:id])
|
|
148
|
-
end
|
|
149
|
-
|
|
150
|
-
# Try again immediately
|
|
151
|
-
message.deliver
|
|
152
|
-
end
|
|
153
|
-
end
|
|
67
|
+
``` yaml
|
|
68
|
+
postmark_api_token: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
|
154
69
|
```
|
|
155
70
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
Wrap any calls to `#deliver_now` in error handlers like the one described
|
|
159
|
-
in the [postmark](https://github.com/wildbit/postmark-gem#error-handling) gem
|
|
160
|
-
docs.
|
|
161
|
-
|
|
162
|
-
Rails 4.2 introduces `#deliver_later` but doesn’t support `rescue_from` for
|
|
163
|
-
mailer classes. Instead, use the following monkey patch for
|
|
164
|
-
`ActionMailer::DeliveryJob`.
|
|
71
|
+
Set Postmark as your preferred mail delivery method via `config/application.rb`:
|
|
165
72
|
|
|
166
73
|
``` ruby
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
class ApplicationMailer < ActionMailer::Base
|
|
170
|
-
default from: 'user@example.org'
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
class ActionMailer::DeliveryJob
|
|
174
|
-
rescue_from Postmark::InactiveRecipientError, with: :reactivate_and_retry
|
|
175
|
-
|
|
176
|
-
def postmark_client
|
|
177
|
-
::Postmark::ApiClient.new(ActionMailer::Base.postmark_settings[:api_token],
|
|
178
|
-
ActionMailer::Base.postmark_settings.except(:api_token))
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
# This is just an example. Sometimes you might not want to reactivate
|
|
183
|
-
# an address that hard bounced.
|
|
184
|
-
# Warning: Having too many bounces can affect your delivery reputation
|
|
185
|
-
# with email providers
|
|
186
|
-
def reactivate_and_retry(error)
|
|
187
|
-
Rails.logger.info("Error when sending a message to #{error.recipients.join(', ')}")
|
|
188
|
-
Rails.logger.info(error)
|
|
189
|
-
|
|
190
|
-
error.recipients.each do |recipient|
|
|
191
|
-
bounce = postmark_client.bounces(emailFilter: recipient).first
|
|
192
|
-
next unless bounce
|
|
193
|
-
postmark_client.activate_bounce(bounce[:id])
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
# Try again immediately
|
|
197
|
-
perform(*arguments)
|
|
198
|
-
end
|
|
199
|
-
end
|
|
74
|
+
config.action_mailer.delivery_method = :postmark
|
|
75
|
+
config.action_mailer.postmark_settings = { :api_token => Rails.application.secrets.postmark_api_token }
|
|
200
76
|
```
|
|
201
77
|
|
|
202
|
-
|
|
78
|
+
***
|
|
203
79
|
|
|
204
|
-
|
|
80
|
+
**Note**: The `postmark_settings` hash can contain [any options](https://github.com/wildbit/postmark-gem#communicating-with-the-api) supported by `Postmark::ApiClient`.
|
|
205
81
|
|
|
206
|
-
## Requirements
|
|
207
82
|
|
|
208
|
-
|
|
209
|
-
* You will also need a Postmark account, a server and at least one sender signature set up to use it. To get an account, [sign up](https://postmarkapp.com/sign_up)!
|
|
83
|
+
### Additional information
|
|
210
84
|
|
|
85
|
+
Looking for the advanced usage examples? Check out [the documentation](https://github.com/wildbit/postmark-gem/blob/master/README.md) for the [postmark gem](https://github.com/wildbit/postmark-gem).
|
|
86
|
+
The `postmark-rails` gem is built on top of it, so you can benefit from all it's features.
|
|
211
87
|
|
|
212
88
|
## Note on Patches/Pull Requests
|
|
213
89
|
|
|
214
|
-
|
|
215
|
-
* Make your feature addition or bug fix.
|
|
216
|
-
* Add tests for it. This is important so we don’t break it in a future version unintentionally.
|
|
217
|
-
* Commit, do not mess with rakefile, version, or history.
|
|
218
|
-
* Send a pull request. Bonus points for topic branches.
|
|
90
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) file for details.
|
|
219
91
|
|
|
220
92
|
## Authors & Contributors
|
|
221
93
|
|
|
@@ -228,6 +100,16 @@ Looking for the advanced usage examples? Check out [the documentation](https://g
|
|
|
228
100
|
* Nicolás Sanguinetti
|
|
229
101
|
* Laust Rud Jacobsen (rud)
|
|
230
102
|
|
|
103
|
+
## Issues & Comments
|
|
104
|
+
|
|
105
|
+
Feel free to contact us if you encounter any issues with the library or Postmark API.
|
|
106
|
+
Please leave all comments, bugs, requests and issues on the Issues page.
|
|
107
|
+
|
|
108
|
+
## License
|
|
109
|
+
|
|
110
|
+
The Postmark Rails gem is licensed under the [MIT](http://www.opensource.org/licenses/mit-license.php) license.
|
|
111
|
+
Refer to the [LICENSE](https://github.com/wildbit/postmark-rails/blob/master/LICENSE) file for more information.
|
|
112
|
+
|
|
231
113
|
## Copyright
|
|
232
114
|
|
|
233
|
-
Copyright ©
|
|
115
|
+
Copyright © 2021 Wildbit LLC.
|
|
@@ -4,7 +4,7 @@ gemspec :path => '../'
|
|
|
4
4
|
|
|
5
5
|
gem 'json', '< 2.0.0'
|
|
6
6
|
gem 'rake', '< 11.0.0'
|
|
7
|
-
gem 'postmark', '~> 1.
|
|
7
|
+
gem 'postmark', '~> 1.15', :path => ENV['POSTMARK_GEM_PATH']
|
|
8
8
|
gem 'actionmailer', '~> 3.0.0'
|
|
9
9
|
gem 'rack-cache', '~> 1.2.0'
|
|
10
10
|
|
|
@@ -4,7 +4,7 @@ gemspec :path => '../'
|
|
|
4
4
|
|
|
5
5
|
gem 'json', '< 2.0.0'
|
|
6
6
|
gem 'rake', '< 11.0.0'
|
|
7
|
-
gem 'postmark', '~> 1.
|
|
7
|
+
gem 'postmark', '~> 1.15', :path => ENV['POSTMARK_GEM_PATH']
|
|
8
8
|
gem 'actionmailer', :github => 'rails', :branch => '3-2-stable'
|
|
9
9
|
gem 'i18n', '~> 0.6.0'
|
|
10
10
|
gem 'rack-cache', '~> 1.2.0'
|
data/lib/postmark-rails.rb
CHANGED
|
@@ -3,10 +3,21 @@ require 'action_mailer'
|
|
|
3
3
|
require 'postmark'
|
|
4
4
|
|
|
5
5
|
module PostmarkRails
|
|
6
|
-
|
|
6
|
+
module ActionMailerExtensions
|
|
7
|
+
def metadata
|
|
8
|
+
@_message.metadata
|
|
9
|
+
end
|
|
7
10
|
|
|
8
|
-
|
|
11
|
+
def metadata=(val)
|
|
12
|
+
@_message.metadata=(val)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.install
|
|
17
|
+
require 'postmark-rails/preview_interceptor'
|
|
18
|
+
require 'postmark-rails/templated_mailer'
|
|
9
19
|
ActionMailer::Base.add_delivery_method :postmark, Mail::Postmark
|
|
20
|
+
ActionMailer::Base.send(:include, ActionMailerExtensions)
|
|
10
21
|
end
|
|
11
22
|
end
|
|
12
23
|
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
require 'active_support/hash_with_indifferent_access'
|
|
2
|
+
|
|
3
|
+
module PostmarkRails
|
|
4
|
+
module TemplatedMailerMixin
|
|
5
|
+
READ_ONLY_HEADERS = %w(body content_type subject).freeze
|
|
6
|
+
BODY_STUB = 'Temporary Postmark Template Body'.freeze
|
|
7
|
+
SUBJECT_STUB = 'Temporary Postmark Template Subject'.freeze
|
|
8
|
+
ALIAS_STUB = proc { action_name }
|
|
9
|
+
|
|
10
|
+
def self.included(mailer)
|
|
11
|
+
mailer.default(
|
|
12
|
+
:body => BODY_STUB,
|
|
13
|
+
:content_type => 'text/plain',
|
|
14
|
+
:subject => SUBJECT_STUB,
|
|
15
|
+
:postmark_template_alias => ALIAS_STUB
|
|
16
|
+
)
|
|
17
|
+
mailer.extend(ClassMethods)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def template_model(*args)
|
|
21
|
+
message.template_model(*args)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def template_model=(model)
|
|
25
|
+
message.template_model = model
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def mail(headers = {})
|
|
29
|
+
super(self.class.safe_headers(headers))
|
|
30
|
+
ensure
|
|
31
|
+
message.body = standard_template_body
|
|
32
|
+
message.subject = standard_template_subject
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
module ClassMethods
|
|
38
|
+
def default(headers = {})
|
|
39
|
+
super(safe_headers(headers))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def safe_headers(headers = {})
|
|
43
|
+
headers = ActiveSupport::HashWithIndifferentAccess.new(headers)
|
|
44
|
+
violation = READ_ONLY_HEADERS.find { |h| headers.key?(h) }
|
|
45
|
+
raise ArgumentError, "Overriding '#{violation}' header in a templated mailer is not allowed." if violation
|
|
46
|
+
headers
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def standard_template_body
|
|
51
|
+
"This message is using a Postmark template.\n\n" \
|
|
52
|
+
"Alias: #{message.template_alias.inspect}\n" \
|
|
53
|
+
"Model:\n#{JSON.pretty_generate(message.template_model || {})}\n\n" \
|
|
54
|
+
'Use the #prerender method on this object to contact the Postmark API ' \
|
|
55
|
+
"to pre-render the template.\n\n" \
|
|
56
|
+
"Cheers,\n" \
|
|
57
|
+
'Your friends at Postmark'
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def standard_template_subject
|
|
61
|
+
"Postmark Template: #{message.template_alias.inspect}"
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
class TemplatedMailer < ::ActionMailer::Base
|
|
66
|
+
include TemplatedMailerMixin
|
|
67
|
+
end
|
|
68
|
+
end
|
data/postmark-rails.gemspec
CHANGED
|
@@ -10,6 +10,10 @@ Gem::Specification.new do |s|
|
|
|
10
10
|
s.homepage = %q{http://postmarkapp.com}
|
|
11
11
|
s.summary = %q{Postmark adapter for ActionMailer}
|
|
12
12
|
|
|
13
|
+
s.metadata = {
|
|
14
|
+
"source_code_uri" => "https://github.com/wildbit/postmark-rails"
|
|
15
|
+
}
|
|
16
|
+
|
|
13
17
|
s.extra_rdoc_files = [
|
|
14
18
|
"LICENSE",
|
|
15
19
|
"README.md"
|
|
@@ -17,7 +21,7 @@ Gem::Specification.new do |s|
|
|
|
17
21
|
s.rdoc_options = ["--charset=UTF-8"]
|
|
18
22
|
|
|
19
23
|
s.add_dependency('actionmailer', ">= 3.0.0")
|
|
20
|
-
s.add_dependency('postmark',
|
|
24
|
+
s.add_dependency('postmark', '>= 1.21.3', '< 2.0')
|
|
21
25
|
|
|
22
26
|
s.add_development_dependency("rake")
|
|
23
27
|
|
data/postmark.png
ADDED
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
This is a message with metadata.
|
|
@@ -42,4 +42,12 @@ describe "Delivering messages with postmark-rails" do
|
|
|
42
42
|
expect { message.deliver }.to change{message.delivered?}.to(true)
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
it 'delivers a message with metadata' do
|
|
46
|
+
message = TestMailer.message_with_metadata
|
|
47
|
+
|
|
48
|
+
request = message.to_postmark_hash
|
|
49
|
+
|
|
50
|
+
expect(request['Metadata']).to eq('foo' => 'bar')
|
|
51
|
+
expect { message.deliver }.to change { message.delivered? }.to true
|
|
52
|
+
end
|
|
53
|
+
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -10,3 +10,12 @@ ActionMailer::Base.delivery_method = :postmark
|
|
|
10
10
|
ActionMailer::Base.prepend_view_path(File.join(File.dirname(__FILE__), "fixtures", "views"))
|
|
11
11
|
|
|
12
12
|
Dir["#{File.dirname(__FILE__)}/fixtures/models/*.rb"].each { |f| require f }
|
|
13
|
+
|
|
14
|
+
RSpec.configure do |config|
|
|
15
|
+
def make_mailer(base, &block)
|
|
16
|
+
mailer = Class.new(base, &block)
|
|
17
|
+
@mailer_number = 0
|
|
18
|
+
stub_const("Mailer#{@mailer_number += 1}", mailer)
|
|
19
|
+
mailer
|
|
20
|
+
end
|
|
21
|
+
end
|
|
File without changes
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
RSpec.describe PostmarkRails::PreviewInterceptor do
|
|
4
|
+
describe '.previewing_email' do
|
|
5
|
+
subject(:preview) { described_class.previewing_email(message) }
|
|
6
|
+
let(:settings) { { :api_token => 'secret' } }
|
|
7
|
+
|
|
8
|
+
before do
|
|
9
|
+
ActionMailer::Base.postmark_settings = settings
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
context 'when given a templated message' do
|
|
13
|
+
let(:message) do
|
|
14
|
+
Mail::Message.new do
|
|
15
|
+
template_alias 'foo'
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it 'changes the message' do
|
|
20
|
+
message.freeze
|
|
21
|
+
expect { preview }.to raise_error(StandardError, /can't modify/)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'changes delivery method to Postmark and prerenders' do
|
|
25
|
+
expect(message).to receive(:prerender).exactly(1)
|
|
26
|
+
expect { preview }.to change { message.delivery_method }.to(Mail::Postmark)
|
|
27
|
+
expect(message.delivery_method.settings).to eq(settings)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
context 'when given a non-templated message' do
|
|
32
|
+
let(:message) { Mail::Message.new }
|
|
33
|
+
|
|
34
|
+
it 'returns the message "as is"' do
|
|
35
|
+
message.freeze
|
|
36
|
+
expect { preview }.to_not raise_error
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
RSpec.describe PostmarkRails::TemplatedMailer do
|
|
4
|
+
subject(:message) { mailer.test_message }
|
|
5
|
+
|
|
6
|
+
shared_examples_for 'templated message' do |template_alias, model|
|
|
7
|
+
it { is_expected.to be_templated }
|
|
8
|
+
specify { expect(message.template_alias).to eq(template_alias) }
|
|
9
|
+
specify { expect(message.template_model).to eq model }
|
|
10
|
+
specify { expect(message.subject).to eq "Postmark Template: #{template_alias.inspect}" }
|
|
11
|
+
specify { expect(message.body_text).to include(template_alias.inspect) }
|
|
12
|
+
specify { expect(message.body_text).to include(JSON.pretty_generate(model || {})) }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context 'when template is not specified' do
|
|
16
|
+
let(:mailer) do
|
|
17
|
+
make_mailer(described_class) do
|
|
18
|
+
def test_message
|
|
19
|
+
mail :from => 'sender@wildbit.com', :to => 'recipient@wildbit.com'
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it_behaves_like 'templated message', 'test_message'
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
context 'when template is specified' do
|
|
28
|
+
let(:mailer) do
|
|
29
|
+
make_mailer(described_class) do
|
|
30
|
+
def test_message
|
|
31
|
+
mail :from => 'sender@wildbit.com',
|
|
32
|
+
:to => 'recipient@wildbit.com',
|
|
33
|
+
:postmark_template_alias => 'custom_template'
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it_behaves_like 'templated message', 'custom_template'
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
context 'when template model is specified' do
|
|
42
|
+
let(:mailer) do
|
|
43
|
+
make_mailer(described_class) do
|
|
44
|
+
def test_message
|
|
45
|
+
self.template_model = { :foo => 'bar' }
|
|
46
|
+
mail :from => 'sender@wildbit.com',
|
|
47
|
+
:to => 'recipient@wildbit.com'
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it_behaves_like 'templated message', 'test_message', :foo => 'bar'
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
describe '.default' do
|
|
56
|
+
it 'protects sensitive default headers from being overwritten' do
|
|
57
|
+
%w(subject body content_type).each do |header|
|
|
58
|
+
expect { described_class.default(header => 'foo') }.
|
|
59
|
+
to raise_error(ArgumentError, "Overriding '#{header}' header in a templated mailer is not allowed.")
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe '#mail' do
|
|
65
|
+
context "when overriding subject" do
|
|
66
|
+
let(:mailer) do
|
|
67
|
+
make_mailer(described_class) do
|
|
68
|
+
def test_message
|
|
69
|
+
mail :subject => 'Subject'
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it 'protects it from being overwritten' do
|
|
75
|
+
expect { mailer.test_message.subject }.
|
|
76
|
+
to raise_error(ArgumentError, "Overriding 'subject' header in a templated mailer is not allowed.")
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
context "when overriding body" do
|
|
81
|
+
let(:mailer) do
|
|
82
|
+
make_mailer(described_class) do
|
|
83
|
+
def test_message
|
|
84
|
+
mail :body => 'body'
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it 'protects it from being overwritten' do
|
|
90
|
+
expect { mailer.test_message.body }.
|
|
91
|
+
to raise_error(ArgumentError, "Overriding 'body' header in a templated mailer is not allowed.")
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
context "when overriding content_type" do
|
|
96
|
+
let(:mailer) do
|
|
97
|
+
make_mailer(described_class) do
|
|
98
|
+
def test_message
|
|
99
|
+
mail :content_type => 'content_type'
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it 'protects it from being overwritten' do
|
|
105
|
+
expect { mailer.test_message.content_type }.
|
|
106
|
+
to raise_error(ArgumentError, "Overriding 'content_type' header in a templated mailer is not allowed.")
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
metadata
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: postmark-rails
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.21.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Petyo Ivanov
|
|
8
8
|
- Ilya Sabanin
|
|
9
9
|
- Artem Chistyakov
|
|
10
|
-
autorequire:
|
|
10
|
+
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date:
|
|
13
|
+
date: 2021-03-23 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: actionmailer
|
|
@@ -30,16 +30,22 @@ dependencies:
|
|
|
30
30
|
name: postmark
|
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
|
32
32
|
requirements:
|
|
33
|
-
- - "
|
|
33
|
+
- - ">="
|
|
34
|
+
- !ruby/object:Gem::Version
|
|
35
|
+
version: 1.21.3
|
|
36
|
+
- - "<"
|
|
34
37
|
- !ruby/object:Gem::Version
|
|
35
|
-
version:
|
|
38
|
+
version: '2.0'
|
|
36
39
|
type: :runtime
|
|
37
40
|
prerelease: false
|
|
38
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
39
42
|
requirements:
|
|
40
|
-
- - "
|
|
43
|
+
- - ">="
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: 1.21.3
|
|
46
|
+
- - "<"
|
|
41
47
|
- !ruby/object:Gem::Version
|
|
42
|
-
version:
|
|
48
|
+
version: '2.0'
|
|
43
49
|
- !ruby/object:Gem::Dependency
|
|
44
50
|
name: rake
|
|
45
51
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -66,7 +72,9 @@ files:
|
|
|
66
72
|
- ".document"
|
|
67
73
|
- ".gitignore"
|
|
68
74
|
- ".travis.yml"
|
|
75
|
+
- ".travis/setup.sh"
|
|
69
76
|
- CHANGELOG.rdoc
|
|
77
|
+
- CONTRIBUTING.md
|
|
70
78
|
- Gemfile
|
|
71
79
|
- LICENSE
|
|
72
80
|
- README.md
|
|
@@ -76,14 +84,22 @@ files:
|
|
|
76
84
|
- gemfiles/Gemfile.actionmailer-4.0.x
|
|
77
85
|
- gemfiles/Gemfile.actionmailer-4.1.x
|
|
78
86
|
- gemfiles/Gemfile.actionmailer-4.2.x
|
|
87
|
+
- gemfiles/Gemfile.actionmailer-5.0.x
|
|
88
|
+
- gemfiles/Gemfile.actionmailer-5.1.x
|
|
89
|
+
- gemfiles/Gemfile.actionmailer-5.2.x
|
|
90
|
+
- gemfiles/Gemfile.actionmailer-6.0.x
|
|
79
91
|
- lib/postmark-rails.rb
|
|
92
|
+
- lib/postmark-rails/preview_interceptor.rb
|
|
80
93
|
- lib/postmark-rails/railtie.rb
|
|
94
|
+
- lib/postmark-rails/templated_mailer.rb
|
|
81
95
|
- lib/postmark-rails/version.rb
|
|
82
96
|
- postmark-rails.gemspec
|
|
97
|
+
- postmark.png
|
|
83
98
|
- spec/fixtures/empty.gif
|
|
84
99
|
- spec/fixtures/models/test_mailer.rb
|
|
85
100
|
- spec/fixtures/views/test_mailer/message_with_attachment.erb
|
|
86
101
|
- spec/fixtures/views/test_mailer/message_with_inline_image.html.erb
|
|
102
|
+
- spec/fixtures/views/test_mailer/message_with_metadata.text.erb
|
|
87
103
|
- spec/fixtures/views/test_mailer/multipart_message.html.erb
|
|
88
104
|
- spec/fixtures/views/test_mailer/multipart_message.text.erb
|
|
89
105
|
- spec/fixtures/views/test_mailer/simple_message.erb
|
|
@@ -91,13 +107,16 @@ files:
|
|
|
91
107
|
- spec/fixtures/views/test_mailer/tracked_message.html.erb
|
|
92
108
|
- spec/integration/batch_delivery_spec.rb
|
|
93
109
|
- spec/integration/delivery_spec.rb
|
|
94
|
-
- spec/postmark-rails_spec.rb
|
|
95
110
|
- spec/spec.opts
|
|
96
111
|
- spec/spec_helper.rb
|
|
112
|
+
- spec/unit/postmark-rails_spec.rb
|
|
113
|
+
- spec/unit/preview_interceptor_spec.rb
|
|
114
|
+
- spec/unit/templated_mailer_spec.rb
|
|
97
115
|
homepage: http://postmarkapp.com
|
|
98
116
|
licenses: []
|
|
99
|
-
metadata:
|
|
100
|
-
|
|
117
|
+
metadata:
|
|
118
|
+
source_code_uri: https://github.com/wildbit/postmark-rails
|
|
119
|
+
post_install_message:
|
|
101
120
|
rdoc_options:
|
|
102
121
|
- "--charset=UTF-8"
|
|
103
122
|
require_paths:
|
|
@@ -113,9 +132,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
113
132
|
- !ruby/object:Gem::Version
|
|
114
133
|
version: '0'
|
|
115
134
|
requirements: []
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
signing_key:
|
|
135
|
+
rubygems_version: 3.0.8
|
|
136
|
+
signing_key:
|
|
119
137
|
specification_version: 4
|
|
120
138
|
summary: Postmark adapter for ActionMailer
|
|
121
139
|
test_files:
|
|
@@ -123,6 +141,7 @@ test_files:
|
|
|
123
141
|
- spec/fixtures/models/test_mailer.rb
|
|
124
142
|
- spec/fixtures/views/test_mailer/message_with_attachment.erb
|
|
125
143
|
- spec/fixtures/views/test_mailer/message_with_inline_image.html.erb
|
|
144
|
+
- spec/fixtures/views/test_mailer/message_with_metadata.text.erb
|
|
126
145
|
- spec/fixtures/views/test_mailer/multipart_message.html.erb
|
|
127
146
|
- spec/fixtures/views/test_mailer/multipart_message.text.erb
|
|
128
147
|
- spec/fixtures/views/test_mailer/simple_message.erb
|
|
@@ -130,6 +149,8 @@ test_files:
|
|
|
130
149
|
- spec/fixtures/views/test_mailer/tracked_message.html.erb
|
|
131
150
|
- spec/integration/batch_delivery_spec.rb
|
|
132
151
|
- spec/integration/delivery_spec.rb
|
|
133
|
-
- spec/postmark-rails_spec.rb
|
|
134
152
|
- spec/spec.opts
|
|
135
153
|
- spec/spec_helper.rb
|
|
154
|
+
- spec/unit/postmark-rails_spec.rb
|
|
155
|
+
- spec/unit/preview_interceptor_spec.rb
|
|
156
|
+
- spec/unit/templated_mailer_spec.rb
|