mailgun-ruby 1.1.6 → 1.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/README.md +11 -3
- data/docs/MessageBuilder.md +3 -0
- data/lib/mailgun/address.rb +5 -2
- data/lib/mailgun/events/events.rb +17 -6
- data/lib/mailgun/version.rb +1 -1
- data/lib/mailgun/webhooks/webhooks.rb +1 -1
- data/lib/railgun/mailer.rb +5 -2
- data/spec/integration/email_validation_spec.rb +6 -0
- data/vcr_cassettes/email_validation.yml +57 -9
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03bb73706b0d179b3f48cfa58f68acc8b0d716e7
|
4
|
+
data.tar.gz: 3fc860e152511f367033a5954ba95720a474fd01
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d1f7e536083087eb9c2423c8cb3cd54624b5d0a7fbfb96eb8740b06c2947c14d94542e6ef22439d0f0711d9627b5219e09b9ccab7408b454e20ad1531a07d56
|
7
|
+
data.tar.gz: 9e03a0244f385c15497856fe9c421d3d330a38309798313c88f3139a86b6fc163cf6234654e15a1c1faceca40b70ad590ff5caf02c3cefc2d225a4eb3bc2b852
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.0.0-p0
|
data/README.md
CHANGED
@@ -27,7 +27,7 @@ Usage
|
|
27
27
|
Here's how to send a message using the library:
|
28
28
|
|
29
29
|
```ruby
|
30
|
-
require 'mailgun'
|
30
|
+
require 'mailgun'
|
31
31
|
|
32
32
|
# First, instantiate the Mailgun Client with your API key
|
33
33
|
mg_client = Mailgun::Client.new 'your-api-key'
|
@@ -65,9 +65,9 @@ Mailgun.configure do |config|
|
|
65
65
|
config.api_key = 'your-secret-api-key'
|
66
66
|
end
|
67
67
|
```
|
68
|
-
Or have the initializer read your environment setting if you
|
68
|
+
Or have the initializer read your environment setting if you prefer.
|
69
69
|
|
70
|
-
To use as the ActionMailer delivery method, add this to your `config/environments/whatever.
|
70
|
+
To use as the ActionMailer delivery method, add this to your `config/environments/whatever.rb`
|
71
71
|
and replace `api-myapikey` and `mydomain.com` with your secret API key and domain, respectively:
|
72
72
|
```ruby
|
73
73
|
config.action_mailer.delivery_method = :mailgun
|
@@ -77,6 +77,14 @@ and replace `api-myapikey` and `mydomain.com` with your secret API key and domai
|
|
77
77
|
}
|
78
78
|
```
|
79
79
|
|
80
|
+
To get the Mailgun `message_id` after ActionMailer has successfully delivered the email:
|
81
|
+
|
82
|
+
```ruby
|
83
|
+
mailer = UserNotifier.welcome_email(current_user)
|
84
|
+
mailer_response = mailer.deliver_now
|
85
|
+
mailgun_message_id = mailer_response.message_id
|
86
|
+
```
|
87
|
+
|
80
88
|
Response
|
81
89
|
--------
|
82
90
|
|
data/docs/MessageBuilder.md
CHANGED
@@ -44,6 +44,9 @@ mb_obj.message_id("<20141014000000.11111.11111@example.com>")
|
|
44
44
|
mb_obj.message_id(nil)
|
45
45
|
mb_obj.message_id('')
|
46
46
|
|
47
|
+
# Set the Message-tags at most 3.
|
48
|
+
mb_obj.add_tag("You can track mails as tag-units!")
|
49
|
+
|
47
50
|
# Campaigns and headers.
|
48
51
|
mb_obj.add_campaign_id("My-Awesome-Campaign");
|
49
52
|
mb_obj.header("Customer-Id", "12345");
|
data/lib/mailgun/address.rb
CHANGED
@@ -18,8 +18,11 @@ module Mailgun
|
|
18
18
|
# Given an arbitrary address, validates it based on defined checks.
|
19
19
|
#
|
20
20
|
# @param [String] address Email address to validate (max 512 chars.)
|
21
|
-
def validate(address)
|
22
|
-
|
21
|
+
def validate(address, mailbox_verification = false)
|
22
|
+
params = {:address => address}
|
23
|
+
params[:mailbox_verification] = true if mailbox_verification
|
24
|
+
|
25
|
+
res = @client.get "address/validate", params
|
23
26
|
return res.to_h!
|
24
27
|
end
|
25
28
|
|
@@ -87,12 +87,23 @@ module Mailgun
|
|
87
87
|
#
|
88
88
|
# Return is irrelevant.
|
89
89
|
def extract_paging(response)
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
@
|
95
|
-
|
90
|
+
paging = response.to_h['paging']
|
91
|
+
next_page_url = paging && paging['next'] # gives nil when any one of the keys doens't exist
|
92
|
+
previous_page_url = paging && paging['previous'] # can be replaced with Hash#dig for ruby >= 2.3.0
|
93
|
+
@paging_next = extract_endpoint_from(next_page_url)
|
94
|
+
@paging_previous = extract_endpoint_from(previous_page_url)
|
95
|
+
end
|
96
|
+
|
97
|
+
# Internal: given a paging URL, extract the endpoint
|
98
|
+
#
|
99
|
+
# response - the endpoint for the previous/next page
|
100
|
+
#
|
101
|
+
# Returns a String of the partial URI if the given url follows the regular API format
|
102
|
+
# Returns nil in other cases (e.g. when given nil, or an irrelevant url)
|
103
|
+
def extract_endpoint_from(url = nil)
|
104
|
+
URI.parse(url).path[/api.mailgun.net\/v[\d]\/#{@domain}\/events\/(.+)/,1]
|
105
|
+
rescue URI::InvalidURIError
|
106
|
+
nil
|
96
107
|
end
|
97
108
|
|
98
109
|
# Internal: construct the event path to be used by the client
|
data/lib/mailgun/version.rb
CHANGED
@@ -46,7 +46,7 @@ module Mailgun
|
|
46
46
|
# Returns a Boolean of whether the webhook was created
|
47
47
|
def create(domain, action, url = '')
|
48
48
|
res = @client.post("domains/#{domain}/webhooks", id: action, url: url)
|
49
|
-
res.to_h['webhook'] == url && res.to_h[message] == 'Webhook has been created'
|
49
|
+
res.to_h['webhook']['url'] == url && res.to_h[message] == 'Webhook has been created'
|
50
50
|
end
|
51
51
|
alias_method :add, :create
|
52
52
|
alias_method :add_webhook, :create
|
data/lib/railgun/mailer.rb
CHANGED
@@ -11,7 +11,7 @@ module Railgun
|
|
11
11
|
|
12
12
|
# [Hash] config ->
|
13
13
|
# Requires *at least* `api_key` and `domain` keys.
|
14
|
-
attr_accessor :config, :domain
|
14
|
+
attr_accessor :config, :domain, :settings
|
15
15
|
|
16
16
|
# Initialize the Railgun mailer.
|
17
17
|
#
|
@@ -26,6 +26,9 @@ module Railgun
|
|
26
26
|
@mg_client = Mailgun::Client.new(config[:api_key])
|
27
27
|
@domain = @config[:domain]
|
28
28
|
|
29
|
+
# To avoid exception in mail gem v2.6
|
30
|
+
@settings = { return_response: true }
|
31
|
+
|
29
32
|
if (@config[:fake_message_send] || false)
|
30
33
|
Rails.logger.info "NOTE: fake message sending has been enabled for mailgun-ruby!"
|
31
34
|
@mg_client.enable_test_mode!
|
@@ -37,7 +40,7 @@ module Railgun
|
|
37
40
|
response = @mg_client.send_message(@domain, mg_message)
|
38
41
|
|
39
42
|
if response.code == 200 then
|
40
|
-
mg_id = response.
|
43
|
+
mg_id = response.to_h['id']
|
41
44
|
mail.message_id = mg_id
|
42
45
|
end
|
43
46
|
response
|
@@ -38,6 +38,12 @@ describe 'For the email validation endpoint', order: :defined, vcr: vcr_opts do
|
|
38
38
|
expect(res).to eq(expected)
|
39
39
|
end
|
40
40
|
|
41
|
+
it 'performs mailbox validation for alice@mailgun.net' do
|
42
|
+
res = @mg_obj.validate("alice@mailgun.net", true)
|
43
|
+
|
44
|
+
expect(res["mailbox_verification"]).to eq("true")
|
45
|
+
end
|
46
|
+
|
41
47
|
it 'fails to validate example.org' do
|
42
48
|
res = @mg_obj.validate("example.org")
|
43
49
|
|
@@ -2,13 +2,13 @@
|
|
2
2
|
http_interactions:
|
3
3
|
- request:
|
4
4
|
method: get
|
5
|
-
uri: https://api:<
|
5
|
+
uri: https://api:<APIKEY>@api.mailgun.net/v3/address/parse?addresses=Alice%20%3Calice@example.com%3E%3Bbob@example.com%3Bexample.org&syntax_only=true
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
8
|
string: ''
|
9
9
|
headers:
|
10
10
|
Accept:
|
11
|
-
-
|
11
|
+
- '*/*'
|
12
12
|
Accept-Encoding:
|
13
13
|
- gzip, deflate
|
14
14
|
User-Agent:
|
@@ -33,7 +33,7 @@ http_interactions:
|
|
33
33
|
Content-Disposition:
|
34
34
|
- inline
|
35
35
|
Access-Control-Allow-Origin:
|
36
|
-
-
|
36
|
+
- '*'
|
37
37
|
Access-Control-Max-Age:
|
38
38
|
- '600'
|
39
39
|
Access-Control-Allow-Methods:
|
@@ -56,13 +56,13 @@ http_interactions:
|
|
56
56
|
recorded_at: Wed, 26 Oct 2016 22:44:50 GMT
|
57
57
|
- request:
|
58
58
|
method: get
|
59
|
-
uri: https://api:<
|
59
|
+
uri: https://api:<APIKEY>@api.mailgun.net/v3/address/validate?address=alice@mailgun.net
|
60
60
|
body:
|
61
61
|
encoding: US-ASCII
|
62
62
|
string: ''
|
63
63
|
headers:
|
64
64
|
Accept:
|
65
|
-
-
|
65
|
+
- '*/*'
|
66
66
|
Accept-Encoding:
|
67
67
|
- gzip, deflate
|
68
68
|
User-Agent:
|
@@ -87,7 +87,7 @@ http_interactions:
|
|
87
87
|
Content-Disposition:
|
88
88
|
- inline
|
89
89
|
Access-Control-Allow-Origin:
|
90
|
-
-
|
90
|
+
- '*'
|
91
91
|
Access-Control-Max-Age:
|
92
92
|
- '600'
|
93
93
|
Access-Control-Allow-Methods:
|
@@ -111,13 +111,13 @@ http_interactions:
|
|
111
111
|
recorded_at: Wed, 26 Oct 2016 22:44:50 GMT
|
112
112
|
- request:
|
113
113
|
method: get
|
114
|
-
uri: https://api:<
|
114
|
+
uri: https://api:<APIKEY>@api.mailgun.net/v3/address/validate?address=example.org
|
115
115
|
body:
|
116
116
|
encoding: US-ASCII
|
117
117
|
string: ''
|
118
118
|
headers:
|
119
119
|
Accept:
|
120
|
-
-
|
120
|
+
- '*/*'
|
121
121
|
Accept-Encoding:
|
122
122
|
- gzip, deflate
|
123
123
|
User-Agent:
|
@@ -142,7 +142,7 @@ http_interactions:
|
|
142
142
|
Content-Disposition:
|
143
143
|
- inline
|
144
144
|
Access-Control-Allow-Origin:
|
145
|
-
-
|
145
|
+
- '*'
|
146
146
|
Access-Control-Max-Age:
|
147
147
|
- '600'
|
148
148
|
Access-Control-Allow-Methods:
|
@@ -164,4 +164,52 @@ http_interactions:
|
|
164
164
|
}
|
165
165
|
http_version:
|
166
166
|
recorded_at: Wed, 26 Oct 2016 22:44:50 GMT
|
167
|
+
- request:
|
168
|
+
method: get
|
169
|
+
uri: https://api:<APIKEY>@api.mailgun.net/v3/address/validate?address=alice@mailgun.net&mailbox_verification=true
|
170
|
+
body:
|
171
|
+
encoding: US-ASCII
|
172
|
+
string: ''
|
173
|
+
headers:
|
174
|
+
Accept:
|
175
|
+
- '*/*'
|
176
|
+
Accept-Encoding:
|
177
|
+
- gzip, deflate
|
178
|
+
User-Agent:
|
179
|
+
- rest-client/2.0.2 (darwin16.7.0 x86_64) ruby/2.0.0p0
|
180
|
+
Host:
|
181
|
+
- api.mailgun.net
|
182
|
+
response:
|
183
|
+
status:
|
184
|
+
code: 200
|
185
|
+
message: OK
|
186
|
+
headers:
|
187
|
+
Access-Control-Allow-Headers:
|
188
|
+
- Content-Type, x-requested-with
|
189
|
+
Access-Control-Allow-Methods:
|
190
|
+
- GET, POST, PUT, DELETE, OPTIONS
|
191
|
+
Access-Control-Allow-Origin:
|
192
|
+
- '*'
|
193
|
+
Access-Control-Max-Age:
|
194
|
+
- '600'
|
195
|
+
Content-Disposition:
|
196
|
+
- inline
|
197
|
+
Content-Type:
|
198
|
+
- application/json
|
199
|
+
Date:
|
200
|
+
- Tue, 12 Sep 2017 16:55:09 GMT
|
201
|
+
Server:
|
202
|
+
- nginx
|
203
|
+
Content-Length:
|
204
|
+
- '243'
|
205
|
+
Connection:
|
206
|
+
- keep-alive
|
207
|
+
body:
|
208
|
+
encoding: UTF-8
|
209
|
+
string: '{"address": "alice@mailgun.net", "did_you_mean": null, "is_disposable_address":
|
210
|
+
false, "is_role_address": false, "is_valid": true, "mailbox_verification":
|
211
|
+
"true", "parts": {"display_name": null, "domain": "mailgun.net", "local_part":
|
212
|
+
"alice"}}'
|
213
|
+
http_version:
|
214
|
+
recorded_at: Tue, 12 Sep 2017 16:55:09 GMT
|
167
215
|
recorded_with: VCR 3.0.3
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailgun-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mailgun
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-09-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -133,6 +133,7 @@ files:
|
|
133
133
|
- ".rubocop.yml"
|
134
134
|
- ".rubocop_todo.yml"
|
135
135
|
- ".ruby-env.yml.example"
|
136
|
+
- ".ruby-version"
|
136
137
|
- ".travis.yml"
|
137
138
|
- Gemfile
|
138
139
|
- LICENSE
|
@@ -229,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
230
|
version: '0'
|
230
231
|
requirements: []
|
231
232
|
rubyforge_project:
|
232
|
-
rubygems_version: 2.
|
233
|
+
rubygems_version: 2.6.13
|
233
234
|
signing_key:
|
234
235
|
specification_version: 4
|
235
236
|
summary: Mailgun's Official Ruby SDK
|