mailgun-ruby 1.2.0 → 1.2.10

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -1
  3. data/docs/Domains.md +3 -0
  4. data/docs/OptInHandler.md +1 -1
  5. data/docs/Snippets.md +54 -61
  6. data/docs/railgun/Templates.md +92 -0
  7. data/lib/mailgun/address.rb +3 -28
  8. data/lib/mailgun/client.rb +43 -10
  9. data/lib/mailgun/domains/domains.rb +19 -1
  10. data/lib/mailgun/exceptions/exceptions.rb +28 -1
  11. data/lib/mailgun/messages/batch_message.rb +1 -0
  12. data/lib/mailgun/messages/message_builder.rb +55 -7
  13. data/lib/mailgun/suppressions.rb +15 -8
  14. data/lib/mailgun/version.rb +1 -1
  15. data/lib/mailgun-ruby.rb +1 -1
  16. data/lib/mailgun.rb +3 -1
  17. data/lib/railgun/mailer.rb +30 -9
  18. data/lib/railgun/message.rb +2 -1
  19. data/lib/railgun/railtie.rb +3 -2
  20. data/mailgun.gemspec +1 -1
  21. data/spec/integration/bounces_spec.rb +3 -3
  22. data/spec/integration/domains_spec.rb +8 -0
  23. data/spec/integration/email_validation_spec.rb +1 -8
  24. data/spec/integration/mailer_spec.rb +67 -0
  25. data/spec/integration/mailgun_spec.rb +76 -1
  26. data/spec/integration/suppressions_spec.rb +18 -2
  27. data/spec/unit/connection/test_client.rb +18 -1
  28. data/spec/unit/mailgun_spec.rb +43 -2
  29. data/spec/unit/messages/batch_message_spec.rb +56 -40
  30. data/spec/unit/messages/message_builder_spec.rb +149 -16
  31. data/spec/unit/messages/sample_data/unknown.type +0 -0
  32. data/spec/unit/railgun/mailer_spec.rb +171 -0
  33. data/vcr_cassettes/bounces.yml +12 -12
  34. data/vcr_cassettes/domains.yml +51 -1
  35. data/vcr_cassettes/exceptions-invalid-api-key.yml +52 -0
  36. data/vcr_cassettes/exceptions-invalid-data.yml +52 -0
  37. data/vcr_cassettes/exceptions-not-allowed.yml +54 -0
  38. data/vcr_cassettes/mailer_invalid_domain.yml +109 -0
  39. data/vcr_cassettes/message_deliver.yml +149 -0
  40. data/vcr_cassettes/suppressions.yml +66 -15
  41. metadata +15 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 68010cfb6e35b2a015974c634c156f502a7fe76e75e571ad394761d8e6a50d97
4
- data.tar.gz: 14f7dc96ffbb2d5bf1e499a336efe276235e0b260c580b40171236b3ea5f77fd
3
+ metadata.gz: 846d1a1383139f176ad8508d5e465ddfa90617e1b7cc138de178344f11b97365
4
+ data.tar.gz: b64fa898adc500f8c5ba7a21af1e02ec92eac3996905ce4a7851cebbe08d2bcd
5
5
  SHA512:
6
- metadata.gz: 39d8397545a5c30c703cde0c32558c595d4479faa91595299232b113b23d60d0e0ad88f197616fc6a8d2cde2c1952cc3c9effe5fced19a208f5f290cca45f658
7
- data.tar.gz: 2eed77f10d1090339987b0a9b120a65017267ced80e694a7710b5058fd14145bab6a2c091c39fa6495c52242648b9524fc88c0a35c782b6dd7057aa57691c16e
6
+ metadata.gz: bd26107fe4db4917f5e78141ed9fe6ca5d659ae1aea7959316bc12e5c18b130a9b5397c9aaf0c31001ba6bd4a2d490c1ec04f5c592c2653c0fa19b5342ff0996
7
+ data.tar.gz: 47b6b488bdae399de35f1418cd92015f0764f884b8a39d2c45c002b4f6bb1db367bd4a24dd6e985b8392f5ef442dc789e17fdd3ac270ad798e44984ddcf3777d
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.1.6'
22
+ gem 'mailgun-ruby', '~>1.2.10'
23
23
  ```
24
24
 
25
25
  Usage
@@ -56,6 +56,12 @@ domain = 'example.com'
56
56
  result = mg_client.get("#{domain}/events", {:event => 'delivered'})
57
57
  ```
58
58
 
59
+ If you're using the EU domains, make sure you specify it when creating the client:
60
+
61
+ ```
62
+ mg_client = Mailgun::Client.new 'your-api-key', 'api.eu.mailgun.net'
63
+ ```
64
+
59
65
  Rails
60
66
  -----
61
67
 
@@ -74,6 +80,7 @@ and replace `api-myapikey` and `mydomain.com` with your secret API key and domai
74
80
  config.action_mailer.mailgun_settings = {
75
81
  api_key: 'api-myapikey',
76
82
  domain: 'mydomain.com',
83
+ # api_host: 'api.eu.mailgun.net' # Uncomment this line for EU region domains
77
84
  }
78
85
  ```
79
86
 
@@ -181,6 +188,7 @@ This SDK includes the following components:
181
188
  - [Webhooks](docs/Webhooks.md)
182
189
  - [Events](docs/Events.md)
183
190
  - [Suppressions](docs/Suppressions.md)
191
+ - [Templates](docs/Templates.md)
184
192
 
185
193
  Message Builder allows you to quickly create the array of parameters, required
186
194
  to send a message, by calling a methods for each parameter.
data/docs/Domains.md CHANGED
@@ -28,6 +28,9 @@ domainer.create 'my.new.moreness', { some: 'options' }
28
28
 
29
29
  # Remove a domain
30
30
  domainer.remove 'this.one.is.not.needed.'
31
+
32
+ # Update a domain
33
+ domainer.update 'my.new.moreness', { some: 'options' }
31
34
  ```
32
35
 
33
36
  Suppressions for a Domain
data/docs/OptInHandler.md CHANGED
@@ -100,4 +100,4 @@ Available Functions
100
100
 
101
101
  More Documentation
102
102
  ------------------
103
- See the official [Mailgun Docs](https://documentation.mailgun.com/api-sending.html) for more information.
103
+ See the official [Mailgun Docs](https://documentation.mailgun.com/en/latest/api-sending.html) for more information.
data/docs/Snippets.md CHANGED
@@ -110,7 +110,7 @@ bm_obj.set_text_body "This is the text body."
110
110
  bm_obj.add_recipient :to, "a_user@example.com"
111
111
 
112
112
  # All message IDs returned in finalize method return
113
- message_ids = @bm_obj.finalize
113
+ message_ids = bm_obj.finalize
114
114
  ```
115
115
 
116
116
  ### Domains:
@@ -118,57 +118,57 @@ ____________________________________________________
118
118
  **Get a list of all domains:**
119
119
 
120
120
  ```ruby
121
- result = @mg_client.get "domains", {:limit => 5, :skip => 0}
121
+ result = mg_client.get "domains", {:limit => 5, :skip => 0}
122
122
  ```
123
123
 
124
124
  **Get a single domain:**
125
125
 
126
126
  ```ruby
127
- result = @mg_client.get "domains/#{domain}"
127
+ result = mg_client.get "domains/#{domain}"
128
128
  ```
129
129
 
130
130
  **Add a domain:**
131
131
 
132
132
  ```ruby
133
- result = @mg_client.post "domains", {:name => 'anothersample.mailgun.org',
133
+ result = mg_client.post "domains", {:name => 'anothersample.mailgun.org',
134
134
  :smtp_password => 'super_secret',
135
135
  :spam_action => 'tag'}
136
136
  ```
137
137
  **Delete a Domain: **
138
138
 
139
139
  ```ruby
140
- result = @mg_client.delete "domains/#{domain}"
140
+ result = mg_client.delete "domains/#{domain}"
141
141
  ```
142
142
  ### Unsubscribes:
143
143
  ____________________________________________________
144
144
  **Get List of Unsubscribes: **
145
145
 
146
146
  ```ruby
147
- result = @mg_client.get "#{domain}/unsubscribes", {:limit => 50, :skip => 10}
147
+ result = mg_client.get "#{domain}/unsubscribes", {:limit => 50, :skip => 10}
148
148
  ```
149
149
 
150
150
  **Get Single Unsubscribe: **
151
151
 
152
152
  ```ruby
153
- result = @mg_client.get "#{domain}/unsubscribes/#{email_address}"
153
+ result = mg_client.get "#{domain}/unsubscribes/#{email_address}"
154
154
  ```
155
155
 
156
156
  **Unsubscribe a Recipient: **
157
157
 
158
158
  ```ruby
159
- result = @mg_client.post "#{domain}/unsubscribes", {:address => 'bob@example.com', :tag => 'mypromotion'}
159
+ result = mg_client.post "#{domain}/unsubscribes", {:address => 'bob@example.com', :tag => 'mypromotion'}
160
160
  ```
161
161
 
162
162
  **Unsubscribe from all messages for a domain: **
163
163
 
164
164
  ```ruby
165
- result = @mg_client.post "#{domain}/unsubscribes", {:address => 'bob@example.com', :tag => '*'}
165
+ result = mg_client.post "#{domain}/unsubscribes", {:address => 'bob@example.com', :tag => '*'}
166
166
  ```
167
167
 
168
168
  **Remove an unsubscribe: **
169
169
 
170
170
  ```ruby
171
- result = @mg_client.delete "#{domain}/unsubscribes/#{email_address}"
171
+ result = mg_client.delete "#{domain}/unsubscribes/#{email_address}"
172
172
  ```
173
173
 
174
174
  ### Complaints:
@@ -176,24 +176,24 @@ ____________________________________________________
176
176
  **Get List of Complaints: **
177
177
 
178
178
  ```ruby
179
- result = @mg_client.get "#{domain}/complaints", {:limit => 50, :skip => 10}
179
+ result = mg_client.get "#{domain}/complaints", {:limit => 50, :skip => 10}
180
180
  ```
181
181
 
182
182
  **Get a Single Complaint: **
183
183
 
184
184
  ```ruby
185
- result = @mg_client.get "#{domain}/complaints/#{email_address}"
185
+ result = mg_client.get "#{domain}/complaints/#{email_address}"
186
186
  ```
187
187
  **Create a complaint: **
188
188
 
189
189
  ```ruby
190
- result = @mg_client.post "#{domain}/complaint", {:address => 'bob@example.com'}
190
+ result = mg_client.post "#{domain}/complaint", {:address => 'bob@example.com'}
191
191
  ```
192
192
 
193
193
  **Remove a complaint: **
194
194
 
195
195
  ```ruby
196
- result = @mg_client.delete "#{domain}/complaint/#{email_address}"
196
+ result = mg_client.delete "#{domain}/complaint/#{email_address}"
197
197
  ```
198
198
 
199
199
  ### Bounces:
@@ -201,19 +201,19 @@ ____________________________________________________
201
201
  **Get List of Bounces: **
202
202
 
203
203
  ```ruby
204
- result = @mg_client.get "#{domain}/bounces", {:limit => 50, :skip => 10}
204
+ result = mg_client.get "#{domain}/bounces", {:limit => 50, :skip => 10}
205
205
  ```
206
206
 
207
207
  **Get a Single Bounce Event: **
208
208
 
209
209
  ```ruby
210
- result = @mg_client.get "#{domain}/bounces/#{email_address}"
210
+ result = mg_client.get "#{domain}/bounces/#{email_address}"
211
211
  ```
212
212
 
213
213
  **Create a Bounce: **
214
214
 
215
215
  ```ruby
216
- result = @mg_client.post "#{domain}/bounces", {:address => 'bob@example.com',
216
+ result = mg_client.post "#{domain}/bounces", {:address => 'bob@example.com',
217
217
  :code => 550,
218
218
  :error => 'Mailbox does not exist.'}
219
219
  ```
@@ -221,7 +221,7 @@ result = @mg_client.post "#{domain}/bounces", {:address => 'bob@example.com',
221
221
  **Remove a Bounced Address: **
222
222
 
223
223
  ```ruby
224
- result = @mg_client.delete "#{domain}/bounces/#{email_address}"
224
+ result = mg_client.delete "#{domain}/bounces/#{email_address}"
225
225
  ```
226
226
 
227
227
  ### Statistics:
@@ -229,7 +229,7 @@ ____________________________________________________
229
229
  **Get Statistics: **
230
230
 
231
231
  ```ruby
232
- result = @mg_client.get "#{domain}/stats", {:limit => 50,
232
+ result = mg_client.get "#{domain}/stats", {:limit => 50,
233
233
  :skip => 10,
234
234
  :event => 'sent',
235
235
  "start-date" => 'Mon, 13 Feb 2015 00:00:00 GMT'}
@@ -238,14 +238,14 @@ result = @mg_client.get "#{domain}/stats", {:limit => 50,
238
238
  **Remove a Tag: **
239
239
 
240
240
  ```ruby
241
- result = @mg_client.delete "#{domain}/tags/#{tag}"
241
+ result = mg_client.delete "#{domain}/tags/#{tag}"
242
242
  ```
243
243
  ### Events:
244
244
  ____________________________________________________
245
245
  **Get Event: **
246
246
 
247
247
  ```ruby
248
- result = @mg_client.get "#{domain}/events", {:event => 'rejected'}
248
+ result = mg_client.get "#{domain}/events", {:event => 'rejected'}
249
249
  ```
250
250
 
251
251
  ### Routes:
@@ -253,18 +253,18 @@ ____________________________________________________
253
253
  **Get List of Routes: **
254
254
 
255
255
  ```ruby
256
- result = @mg_client.get "routes", {:limit => 50, :skip => 10}
256
+ result = mg_client.get "routes", {:limit => 50, :skip => 10}
257
257
  ```
258
258
 
259
259
  **Get a Single Route by ID: **
260
260
 
261
261
  ```ruby
262
- result = @mg_client.get "routes/#{route_id}"
262
+ result = mg_client.get "routes/#{route_id}"
263
263
  ```
264
264
  **Create a Route: **
265
265
 
266
266
  ```ruby
267
- result = @mg_client.post "routes", {:priority => 10,
267
+ result = mg_client.post "routes", {:priority => 10,
268
268
  :description => 'This is a test route',
269
269
  :expression => 'match_recipient(".*@gmail.com")',
270
270
  :action => 'forward("alice@example.com")'}
@@ -272,7 +272,7 @@ result = @mg_client.post "routes", {:priority => 10,
272
272
  **Update a Route: **
273
273
 
274
274
  ```ruby
275
- result = @mg_client.put "routes/#{route_id}", {:priority => 10,
275
+ result = mg_client.put "routes/#{route_id}", {:priority => 10,
276
276
  :description => 'This is a test route',
277
277
  :expression => 'match_recipient(".*@gmail.com")',
278
278
  :action => 'forward("alice@example.com")'}
@@ -280,46 +280,46 @@ result = @mg_client.put "routes/#{route_id}", {:priority => 10,
280
280
  **Remove a Route: **
281
281
 
282
282
  ```ruby
283
- result = @mg_client.delete "routes/#{route_id}"
283
+ result = mg_client.delete "routes/#{route_id}"
284
284
  ```
285
285
  ### Campaigns:
286
286
  ____________________________________________________
287
287
  **Get List of Campaigns: **
288
288
 
289
289
  ```ruby
290
- result = @mg_client.get "#{domain}/campaigns", {:limit => 50, :skip => 10}
290
+ result = mg_client.get "#{domain}/campaigns", {:limit => 50, :skip => 10}
291
291
  ```
292
292
 
293
293
  **Get a Single Campaign: **
294
294
 
295
295
  ```ruby
296
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}"
296
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}"
297
297
  ```
298
298
 
299
299
  **Create a Campaign: **
300
300
 
301
301
  ```ruby
302
- result = @mg_client.post "#{domain}/campaigns", {:name => 'My Campaign',
302
+ result = mg_client.post "#{domain}/campaigns", {:name => 'My Campaign',
303
303
  :id => 'campaign_123_2014'}
304
304
  ```
305
305
 
306
306
  **Update a Campaign: **
307
307
 
308
308
  ```ruby
309
- result = @mg_client.put "#{domain}/campaigns/#{campaign_id}", {:name => 'My Campaign',
309
+ result = mg_client.put "#{domain}/campaigns/#{campaign_id}", {:name => 'My Campaign',
310
310
  :id => 'campaign_123_2014'}
311
311
  ```
312
312
 
313
313
  **Remove a Campaign: **
314
314
 
315
315
  ```ruby
316
- result = @mg_client.delete "#{domain}/campaigns/#{campaign_id}"
316
+ result = mg_client.delete "#{domain}/campaigns/#{campaign_id}"
317
317
  ```
318
318
 
319
319
  **Get Campaign Events: **
320
320
 
321
321
  ```ruby
322
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/events", {:event => 'clicked',
322
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}/events", {:event => 'clicked',
323
323
  :recipient => 'test@example.com',
324
324
  :country => 'US',
325
325
  :region => 'TX',
@@ -331,13 +331,13 @@ result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/events", {:event =>
331
331
  **Get a Single Campaign's Stats: **
332
332
 
333
333
  ```ruby
334
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/stats", {:groupby => 'domain'}
334
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}/stats", {:groupby => 'domain'}
335
335
  ```
336
336
 
337
337
  **Get a Single Campaign's Click Stats: **
338
338
 
339
339
  ```ruby
340
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/clicks", {:groupby => 'hour',
340
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}/clicks", {:groupby => 'hour',
341
341
  :country => 'US',
342
342
  :region => 'TX',
343
343
  :city => 'Austin',
@@ -349,7 +349,7 @@ result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/clicks", {:groupby =
349
349
  **Get a Single Campaign's Click Opens: **
350
350
 
351
351
  ```ruby
352
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/opens", {:groupby => 'hour',
352
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}/opens", {:groupby => 'hour',
353
353
  :country => 'US',
354
354
  :region => 'TX',
355
355
  :city => 'Austin',
@@ -361,7 +361,7 @@ result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/opens", {:groupby =>
361
361
  **Get a Single Campaign's Click Unsubscribes: **
362
362
 
363
363
  ```ruby
364
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/unsubscribes", {:groupby => 'hour',
364
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}/unsubscribes", {:groupby => 'hour',
365
365
  :country => 'US',
366
366
  :region => 'TX',
367
367
  :city => 'Austin',
@@ -373,7 +373,7 @@ result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/unsubscribes", {:gro
373
373
  **Get a Single Campaign's Click Complaints: **
374
374
 
375
375
  ```ruby
376
- result = @mg_client.get "#{domain}/campaigns/#{campaign_id}/complaints", {:groupby => 'hour',
376
+ result = mg_client.get "#{domain}/campaigns/#{campaign_id}/complaints", {:groupby => 'hour',
377
377
  :limit => 100,
378
378
  :page => 1,
379
379
  :count => true}
@@ -385,33 +385,33 @@ ____________________________________________________
385
385
  **Get List of Webhooks: **
386
386
 
387
387
  ```ruby
388
- result = @mg_client.get "domains/#{domain}/webhooks"
388
+ result = mg_client.get "domains/#{domain}/webhooks"
389
389
  ```
390
390
 
391
391
  **Get a Webhook Properties: **
392
392
 
393
393
  ```ruby
394
- result = @mg_client.get "domains/#{domain}/webhooks/#{webhook_id}"
394
+ result = mg_client.get "domains/#{domain}/webhooks/#{webhook_id}"
395
395
  ```
396
396
 
397
397
  **Create a Webhook: **
398
398
 
399
399
  ```ruby
400
- result = @mg_client.post "domains/#{domain}/webhooks", {:id => 'bounce',
400
+ result = mg_client.post "domains/#{domain}/webhooks", {:id => 'bounce',
401
401
  :url => 'http://example.com/mailgun/events/bounce'}
402
402
  ```
403
403
 
404
404
  **Update a Webhook: **
405
405
 
406
406
  ```ruby
407
- result = @mg_client.put "domains/#{domain}/webhooks/#{webhook_id}", {:id => 'bounce',
407
+ result = mg_client.put "domains/#{domain}/webhooks/#{webhook_id}", {:id => 'bounce',
408
408
  :url => 'http://example.com/mailgun/events/bounce'}
409
409
  ```
410
410
 
411
411
  **Remove a Webhook: **
412
412
 
413
413
  ```ruby
414
- result = @mg_client.delete "domains/#{domain}/webhooks/#{webhook_id}"
414
+ result = mg_client.delete "domains/#{domain}/webhooks/#{webhook_id}"
415
415
  ```
416
416
 
417
417
  ### Mailing Lists:
@@ -420,19 +420,19 @@ ____________________________________________________
420
420
  **Get list of Lists: **
421
421
 
422
422
  ```ruby
423
- result = @mg_client.get "lists"
423
+ result = mg_client.get "lists"
424
424
  ```
425
425
 
426
426
  **Get List Properties: **
427
427
 
428
428
  ```ruby
429
- result = @mg_client.get "lists/#{list_address}"
429
+ result = mg_client.get "lists/#{list_address}"
430
430
  ```
431
431
 
432
432
  **Create a List: **
433
433
 
434
434
  ```ruby
435
- result = @mg_client.post "lists", {:address => 'dev.group@samples.mailgun.org',
435
+ result = mg_client.post "lists", {:address => 'dev.group@samples.mailgun.org',
436
436
  :name => 'Development Group List',
437
437
  :description => 'List of all developers.',
438
438
  :access_level => 'members'}
@@ -441,7 +441,7 @@ result = @mg_client.post "lists", {:address => 'dev.group@samples.mailgun.org',
441
441
  **Update a List: **
442
442
 
443
443
  ```ruby
444
- result = @mg_client.put "lists/#{list_address}", {:address => 'dev.group@samples.mailgun.org',
444
+ result = mg_client.put "lists/#{list_address}", {:address => 'dev.group@samples.mailgun.org',
445
445
  :name => 'Development Group List',
446
446
  :description => 'List of all developers.',
447
447
  :access_level => 'members'}
@@ -450,25 +450,25 @@ result = @mg_client.put "lists/#{list_address}", {:address => 'dev.group@samples
450
450
  **Remove a List: **
451
451
 
452
452
  ```ruby
453
- result = @mg_client.delete "lists/#{list_address}"
453
+ result = mg_client.delete "lists/#{list_address}"
454
454
  ```
455
455
 
456
456
  **Get List Members: **
457
457
 
458
458
  ```ruby
459
- result = @mg_client.get "lists/#{list_address}/members"
459
+ result = mg_client.get "lists/#{list_address}/members"
460
460
  ```
461
461
 
462
462
  **Get List Member Properties: **
463
463
 
464
464
  ```ruby
465
- result = @mg_client.get "lists/#{list_address}/members/#{member_address}"
465
+ result = mg_client.get "lists/#{list_address}/members/#{member_address}"
466
466
  ```
467
467
 
468
468
  **Add Member to List: **
469
469
 
470
470
  ```ruby
471
- result = @mg_client.post "lists/#{list_address}/members/#{member_address}", {:address => 'jane@samples.mailgun.org',
471
+ result = mg_client.post "lists/#{list_address}/members/#{member_address}", {:address => 'jane@samples.mailgun.org',
472
472
  :name => 'Jane Doe',
473
473
  :vars => '{"first": "Jane", "last": "Doe"}',
474
474
  :subscribed => true,
@@ -478,7 +478,7 @@ result = @mg_client.post "lists/#{list_address}/members/#{member_address}", {:ad
478
478
  **Update Member on List: **
479
479
 
480
480
  ```ruby
481
- result = @mg_client.put "lists/#{list_address}/members/#{member_address}", {:address => 'jane@samples.mailgun.org',
481
+ result = mg_client.put "lists/#{list_address}/members/#{member_address}", {:address => 'jane@samples.mailgun.org',
482
482
  :name => 'Jane Doe',
483
483
  :vars => '{"first": "Jane", "last": "Doe"}',
484
484
  :subscribed => true}
@@ -487,13 +487,13 @@ result = @mg_client.put "lists/#{list_address}/members/#{member_address}", {:add
487
487
  **Delete a Member from List: **
488
488
 
489
489
  ```ruby
490
- result = @mg_client.delete "lists/#{list_address}/members/#{member_address}"
490
+ result = mg_client.delete "lists/#{list_address}/members/#{member_address}"
491
491
  ```
492
492
 
493
493
  **Get Stats for List: **
494
494
 
495
495
  ```ruby
496
- result = @mg_client.get "lists/#{list_address}/stats"
496
+ result = mg_client.get "lists/#{list_address}/stats"
497
497
  ```
498
498
 
499
499
  ### Email Validation:
@@ -501,14 +501,7 @@ ____________________________________________________
501
501
  **Validate Single Address: **
502
502
 
503
503
  ```ruby
504
- result = @mg_client.get "address/validate", {:address => 'test@example.com'}
505
- ```
506
-
507
- **Parse Addresses: **
508
-
509
- ```ruby
510
- result = @mg_client.get "address/parse", {:addresses => 'test@example.com, "First Last <first.last@example.com>',
511
- :syntax_only => true}
504
+ result = mg_client.get "address/validate", {:address => 'test@example.com'}
512
505
  ```
513
506
 
514
507
 
@@ -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
@@ -4,45 +4,20 @@ module Mailgun
4
4
 
5
5
  # Mailgun::Address is a simple interface to the Email Validation API.
6
6
  class Address
7
-
8
- # @param [String] api_key Mailgun API - public key
9
- def initialize(api_key = "")
10
- if api_key == "" then
11
- fail ParameterError.new('Public API key is required for Mailgun::Address.initialize()', nil)
12
- end
13
-
14
- @api_key = api_key
15
- @client = Mailgun::Client.new(api_key = api_key)
7
+ def initialize
8
+ @client = Mailgun::Client.new(Mailgun.api_key, Mailgun.api_host || 'api.mailgun.net', 'v4')
16
9
  end
17
10
 
18
11
  # Given an arbitrary address, validates it based on defined checks.
19
12
  #
20
13
  # @param [String] address Email address to validate (max 512 chars.)
21
14
  def validate(address, mailbox_verification = false)
22
- params = {:address => address}
15
+ params = {address: address}
23
16
  params[:mailbox_verification] = true if mailbox_verification
24
17
 
25
18
  res = @client.get "address/validate", params
26
19
  return res.to_h!
27
20
  end
28
-
29
- # Parses a delimiter separated list of email addresses into two lists:
30
- # parsed addresses and unparsable portions. The parsed addresses are a
31
- # list of addresses that are syntactically valid (and optionally have
32
- # DNS and ESP specific grammar checks) the unparsable list is a list
33
- # of characters sequences that the parser was not able to understand.
34
- # These often align with invalid email addresses, but not always.
35
- # Delimiter characters are comma (,) and semicolon (;).
36
- #
37
- # @param [Array] addresses Addresses to parse
38
- # @param [TrueClass|FalseClass] syntax_only Perform only syntax checks
39
- def parse(addresses, syntax_only = true)
40
- validate_addrs = addresses.join(";")
41
-
42
- res = @client.get "address/parse", {:addresses => validate_addrs,
43
- :syntax_only => syntax_only.to_s}
44
- return res.to_h!
45
- end
46
21
  end
47
22
 
48
23
  end