mailgun-ruby 1.2.6 → 1.2.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/docs/railgun/Templates.md +92 -0
- data/lib/mailgun/client.rb +8 -3
- data/lib/mailgun/suppressions.rb +11 -7
- data/lib/mailgun/version.rb +1 -1
- data/lib/railgun/mailer.rb +3 -0
- data/spec/integration/bounces_spec.rb +3 -3
- data/vcr_cassettes/bounces.yml +12 -12
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6f8edf9d12225755a4ddaba5a1974b8ccc30f4b150d9880a5dc174d0612c619
|
4
|
+
data.tar.gz: c676969ade04f6b2e8d2322ff68922d5065e5ca1720eeb821aa429849fddc7b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dac9ef370272bed2a8bd78080dbc8e322aae34fe4fa9639d5c35c1de008d088ab8845355c96bac3efd331f43803cf9834047e7843620cc8602efd380aa6b8ae4
|
7
|
+
data.tar.gz: 1cc92c4983c7f3e2b94e0ae577caf8b0010e5e08d6e453adba658acce942186c3b443dbca4930feeeea4bfdaab16a5cfb2bc245ffdd42571de323f4abbbc9c52
|
data/README.md
CHANGED
@@ -19,7 +19,7 @@ gem install mailgun-ruby
|
|
19
19
|
Gemfile:
|
20
20
|
|
21
21
|
```ruby
|
22
|
-
gem 'mailgun-ruby', '~>1.2.
|
22
|
+
gem 'mailgun-ruby', '~>1.2.7'
|
23
23
|
```
|
24
24
|
|
25
25
|
Usage
|
@@ -188,6 +188,7 @@ This SDK includes the following components:
|
|
188
188
|
- [Webhooks](docs/Webhooks.md)
|
189
189
|
- [Events](docs/Events.md)
|
190
190
|
- [Suppressions](docs/Suppressions.md)
|
191
|
+
- [Templates](docs/Templates.md)
|
191
192
|
|
192
193
|
Message Builder allows you to quickly create the array of parameters, required
|
193
194
|
to send a message, by calling a methods for each parameter.
|
@@ -0,0 +1,92 @@
|
|
1
|
+
Mailgun - Templates
|
2
|
+
====================
|
3
|
+
|
4
|
+
This is the Mailgun Ruby *Templates* utilities.
|
5
|
+
|
6
|
+
The below assumes you've already installed the Mailgun Ruby SDK in to your
|
7
|
+
project. If not, go back to the master README for instructions.
|
8
|
+
|
9
|
+
Usage - Templates
|
10
|
+
-----------------------
|
11
|
+
|
12
|
+
**Build a message with a template:**
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
mb_obj = Mailgun::MessageBuilder.new
|
16
|
+
|
17
|
+
mb_obj.from("sender@example.com")
|
18
|
+
mb_obj.add_recipient("to", "recipient@example.com")
|
19
|
+
mb_obj.subject ("This is the subject!")
|
20
|
+
message.template('example.template.name')
|
21
|
+
message.template_version('example.tag')
|
22
|
+
|
23
|
+
mg_client.send_message "sending_domain.com", mb_obj
|
24
|
+
```
|
25
|
+
|
26
|
+
**Rails Example. Build a message with a template:**
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
class UserMailer < ApplicationMailer
|
30
|
+
def welcome_email
|
31
|
+
message = mail(
|
32
|
+
from: "sender@example.com",
|
33
|
+
to: "recipient@example.com",
|
34
|
+
subject: "This is the subject!",
|
35
|
+
template: 'example.template.name'
|
36
|
+
) do |format|
|
37
|
+
format.text { render plain: "Test!" }
|
38
|
+
end
|
39
|
+
message.tap do |message|
|
40
|
+
message.mailgun_template_variables ||= {
|
41
|
+
'version' => 'example.tag'
|
42
|
+
}
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
```
|
47
|
+
|
48
|
+
Template Handlebars
|
49
|
+
-------------------------
|
50
|
+
|
51
|
+
```
|
52
|
+
{{#if english}}
|
53
|
+
<p>This text is in the English language.</p>
|
54
|
+
{{else if spanish}}
|
55
|
+
<p>Este texto está en idioma español.</p>
|
56
|
+
{{else if french}}
|
57
|
+
<p>Ce texte est en langue française.</p>
|
58
|
+
{{/if}}
|
59
|
+
```
|
60
|
+
|
61
|
+
In order to send the spanish version, for example:
|
62
|
+
|
63
|
+
```ruby
|
64
|
+
message.variable('spanish', 'true')
|
65
|
+
```
|
66
|
+
|
67
|
+
Also, Rails example:
|
68
|
+
|
69
|
+
```ruby
|
70
|
+
class UserMailer < ApplicationMailer
|
71
|
+
def welcome_email
|
72
|
+
message = mail(
|
73
|
+
from: "sender@example.com",
|
74
|
+
to: "recipient@example.com",
|
75
|
+
subject: "This is the subject!",
|
76
|
+
template: 'example.template.name'
|
77
|
+
) do |format|
|
78
|
+
format.text { render plain: "Test!" }
|
79
|
+
end
|
80
|
+
message.tap do |message|
|
81
|
+
message.mailgun_variables ||= {
|
82
|
+
'spanish' => 'true'
|
83
|
+
}
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
```
|
88
|
+
|
89
|
+
More Documentation
|
90
|
+
------------------
|
91
|
+
See the official [Mailgun Templates Docs](https://documentation.mailgun.com/en/latest/api-templates.html)
|
92
|
+
for more information
|
data/lib/mailgun/client.rb
CHANGED
@@ -11,12 +11,12 @@ module Mailgun
|
|
11
11
|
class Client
|
12
12
|
|
13
13
|
def initialize(api_key = Mailgun.api_key,
|
14
|
-
api_host = 'api.mailgun.net',
|
15
|
-
api_version = 'v3',
|
14
|
+
api_host = Mailgun.api_host || 'api.mailgun.net',
|
15
|
+
api_version = Mailgun.api_version || 'v3',
|
16
16
|
ssl = true,
|
17
17
|
test_mode = false,
|
18
18
|
timeout = nil,
|
19
|
-
proxy_url =
|
19
|
+
proxy_url = Mailgun.proxy_url)
|
20
20
|
|
21
21
|
rest_client_params = {
|
22
22
|
user: 'api',
|
@@ -45,6 +45,11 @@ module Mailgun
|
|
45
45
|
@test_mode = false
|
46
46
|
end
|
47
47
|
|
48
|
+
# Change API key
|
49
|
+
def set_api_key(api_key)
|
50
|
+
@http_client.options[:password] = api_key
|
51
|
+
end
|
52
|
+
|
48
53
|
# Client is in test mode?
|
49
54
|
#
|
50
55
|
# @return [Boolean] Is the client set in test mode?
|
data/lib/mailgun/suppressions.rb
CHANGED
@@ -45,11 +45,11 @@ module Mailgun
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def get_bounce(address)
|
48
|
-
@client.get("#{@domain}/bounces/#{address}", nil)
|
48
|
+
@client.get("#{@domain}/bounces/#{escape_address(address)}", nil)
|
49
49
|
end
|
50
50
|
|
51
51
|
def create_bounce(params = {})
|
52
|
-
@client.post("#{@domain/bounces
|
52
|
+
@client.post("#{@domain}/bounces", params)
|
53
53
|
end
|
54
54
|
|
55
55
|
# Creates multiple bounces on the Mailgun API.
|
@@ -100,7 +100,7 @@ module Mailgun
|
|
100
100
|
end
|
101
101
|
|
102
102
|
def delete_bounce(address)
|
103
|
-
@client.delete("#{@domain}/bounces/#{address}")
|
103
|
+
@client.delete("#{@domain}/bounces/#{escape_address(address)}")
|
104
104
|
end
|
105
105
|
|
106
106
|
def delete_all_bounces
|
@@ -118,7 +118,7 @@ module Mailgun
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def get_unsubscribe(address)
|
121
|
-
@client.get("#{@domain}/unsubscribes/#{address}")
|
121
|
+
@client.get("#{@domain}/unsubscribes/#{escape_address(address)}")
|
122
122
|
end
|
123
123
|
|
124
124
|
def create_unsubscribe(params = {})
|
@@ -173,7 +173,7 @@ module Mailgun
|
|
173
173
|
end
|
174
174
|
|
175
175
|
def delete_unsubscribe(address, params = {})
|
176
|
-
@client.delete("#{@domain}/unsubscribes/#{address}")
|
176
|
+
@client.delete("#{@domain}/unsubscribes/#{escape_address(address)}")
|
177
177
|
end
|
178
178
|
|
179
179
|
####
|
@@ -187,7 +187,7 @@ module Mailgun
|
|
187
187
|
end
|
188
188
|
|
189
189
|
def get_complaint(address)
|
190
|
-
@client.get("#{@domain}/complaints/#{address}", nil)
|
190
|
+
@client.get("#{@domain}/complaints/#{escape_address(address)}", nil)
|
191
191
|
end
|
192
192
|
|
193
193
|
def create_complaint(params = {})
|
@@ -239,11 +239,15 @@ module Mailgun
|
|
239
239
|
end
|
240
240
|
|
241
241
|
def delete_complaint(address)
|
242
|
-
@client.delete("#{@domain}/complaints/#{address}")
|
242
|
+
@client.delete("#{@domain}/complaints/#{escape_address(address)}")
|
243
243
|
end
|
244
244
|
|
245
245
|
private
|
246
246
|
|
247
|
+
def escape_address(address)
|
248
|
+
CGI.escape address
|
249
|
+
end
|
250
|
+
|
247
251
|
def get_from_paging(uri, params = {})
|
248
252
|
@client.get(uri, params)
|
249
253
|
end
|
data/lib/mailgun/version.rb
CHANGED
data/lib/railgun/mailer.rb
CHANGED
@@ -48,7 +48,10 @@ module Railgun
|
|
48
48
|
|
49
49
|
def deliver!(mail)
|
50
50
|
@mg_domain = set_mg_domain(mail)
|
51
|
+
@mg_client.set_api_key(mail[:api_key].value) if mail[:api_key].present?
|
52
|
+
|
51
53
|
mail[:domain] = nil if mail[:domain].present?
|
54
|
+
mail[:api_key] = nil if mail[:api_key].present?
|
52
55
|
|
53
56
|
mg_message = Railgun.transform_for_mailgun(mail)
|
54
57
|
response = @mg_client.send_message(@mg_domain, mg_message)
|
@@ -7,7 +7,7 @@ describe 'For the Bounces endpoint', order: :defined, vcr: vcr_opts do
|
|
7
7
|
before(:all) do
|
8
8
|
@mg_obj = Mailgun::Client.new(APIKEY, APIHOST, APIVERSION, SSL)
|
9
9
|
@domain = TESTDOMAIN
|
10
|
-
@email = "integration-test
|
10
|
+
@email = "integration-test+email@#{TESTDOMAIN}"
|
11
11
|
end
|
12
12
|
|
13
13
|
it 'creates a bounce' do
|
@@ -22,7 +22,7 @@ describe 'For the Bounces endpoint', order: :defined, vcr: vcr_opts do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'get a bounce.' do
|
25
|
-
result = @mg_obj.get("#{@domain}/bounces/#{@email}")
|
25
|
+
result = @mg_obj.get("#{@domain}/bounces/#{CGI.escape(@email)}")
|
26
26
|
|
27
27
|
result.to_h!
|
28
28
|
expect(result.body["code"]).to eq("550")
|
@@ -38,7 +38,7 @@ describe 'For the Bounces endpoint', order: :defined, vcr: vcr_opts do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'deletes a bounce' do
|
41
|
-
@mg_obj.delete("#{@domain}/bounces/#{@email}")
|
41
|
+
@mg_obj.delete("#{@domain}/bounces/#{CGI.escape(@email)}")
|
42
42
|
end
|
43
43
|
|
44
44
|
end
|
data/vcr_cassettes/bounces.yml
CHANGED
@@ -5,7 +5,7 @@ http_interactions:
|
|
5
5
|
uri: https://api:<APIKEY>@api.mailgun.net/v3/DOMAIN.TEST/bounces
|
6
6
|
body:
|
7
7
|
encoding: US-ASCII
|
8
|
-
string: address=integration-test
|
8
|
+
string: address=integration-test%2Bemail%40DOMAIN.TEST&code=550&error=Integration%20Test
|
9
9
|
headers:
|
10
10
|
Accept:
|
11
11
|
- "*/*; q=0.5, application/xml"
|
@@ -42,13 +42,13 @@ http_interactions:
|
|
42
42
|
- Content-Type, x-requested-with
|
43
43
|
body:
|
44
44
|
encoding: UTF-8
|
45
|
-
string: '{"address":"integration-test
|
45
|
+
string: '{"address":"integration-test+email@DOMAIN.TEST","message":"Address
|
46
46
|
has been added to the bounces table"}'
|
47
|
-
http_version:
|
47
|
+
http_version:
|
48
48
|
recorded_at: Fri, 08 Jan 2016 20:33:29 GMT
|
49
49
|
- request:
|
50
50
|
method: get
|
51
|
-
uri: https://api:<APIKEY>@api.mailgun.net/v3/DOMAIN.TEST/bounces/integration-test
|
51
|
+
uri: https://api:<APIKEY>@api.mailgun.net/v3/DOMAIN.TEST/bounces/integration-test+email@DOMAIN.TEST
|
52
52
|
body:
|
53
53
|
encoding: US-ASCII
|
54
54
|
string: ''
|
@@ -84,9 +84,9 @@ http_interactions:
|
|
84
84
|
- Content-Type, x-requested-with
|
85
85
|
body:
|
86
86
|
encoding: UTF-8
|
87
|
-
string: '{"address":"integration-test
|
87
|
+
string: '{"address":"integration-test+email@DOMAIN.TEST","code":"550","error":"Integration
|
88
88
|
Test","created_at":"Fri, 08 Jan 2016 20:33:28 UTC"}'
|
89
|
-
http_version:
|
89
|
+
http_version:
|
90
90
|
recorded_at: Fri, 08 Jan 2016 20:33:29 GMT
|
91
91
|
- request:
|
92
92
|
method: get
|
@@ -126,13 +126,13 @@ http_interactions:
|
|
126
126
|
- Content-Type, x-requested-with
|
127
127
|
body:
|
128
128
|
encoding: UTF-8
|
129
|
-
string: '{"items":[{"address":"integration-test
|
130
|
-
Test","created_at":"Fri, 08 Jan 2016 20:33:28 UTC"}],"paging":{"first":"https://api.mailgun.net/v3/DOMAIN.TEST/bounces?limit=100","last":"https://api.mailgun.net/v3/DOMAIN.TEST/bounces?page=last\u0026limit=100","next":"https://api.mailgun.net/v3/DOMAIN.TEST/bounces?page=next\u0026address=integration-test
|
131
|
-
http_version:
|
129
|
+
string: '{"items":[{"address":"integration-test+email@DOMAIN.TEST","code":"550","error":"Integration
|
130
|
+
Test","created_at":"Fri, 08 Jan 2016 20:33:28 UTC"}],"paging":{"first":"https://api.mailgun.net/v3/DOMAIN.TEST/bounces?limit=100","last":"https://api.mailgun.net/v3/DOMAIN.TEST/bounces?page=last\u0026limit=100","next":"https://api.mailgun.net/v3/DOMAIN.TEST/bounces?page=next\u0026address=integration-test%2Bemaill%40DOMAIN.TEST\u0026limit=100","previous":"https://api.mailgun.net/v3/DOMAIN.TEST/bounces?page=previous\u0026address=integration-test%2Bemail%40DOMAIN.TEST\u0026limit=100"}}'
|
131
|
+
http_version:
|
132
132
|
recorded_at: Fri, 08 Jan 2016 20:33:29 GMT
|
133
133
|
- request:
|
134
134
|
method: delete
|
135
|
-
uri: https://api:<APIKEY>@api.mailgun.net/v3/DOMAIN.TEST/bounces/integration-test
|
135
|
+
uri: https://api:<APIKEY>@api.mailgun.net/v3/DOMAIN.TEST/bounces/integration-test+email@DOMAIN.TEST
|
136
136
|
body:
|
137
137
|
encoding: US-ASCII
|
138
138
|
string: ''
|
@@ -168,8 +168,8 @@ http_interactions:
|
|
168
168
|
- Content-Type, x-requested-with
|
169
169
|
body:
|
170
170
|
encoding: UTF-8
|
171
|
-
string: '{"address":"integration-test
|
171
|
+
string: '{"address":"integration-test+email@DOMAIN.TEST","message":"Bounced
|
172
172
|
address has been removed"}'
|
173
|
-
http_version:
|
173
|
+
http_version:
|
174
174
|
recorded_at: Fri, 08 Jan 2016 20:33:30 GMT
|
175
175
|
recorded_with: VCR 3.0.1
|
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.2.
|
4
|
+
version: 1.2.7
|
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:
|
12
|
+
date: 2023-02-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -162,6 +162,7 @@ files:
|
|
162
162
|
- docs/Webhooks.md
|
163
163
|
- docs/railgun/Overview.md
|
164
164
|
- docs/railgun/Parameters.md
|
165
|
+
- docs/railgun/Templates.md
|
165
166
|
- lib/mailgun-ruby.rb
|
166
167
|
- lib/mailgun.rb
|
167
168
|
- lib/mailgun/address.rb
|