mailjet 1.5.3 → 1.5.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -4
- data/lib/generators/mailjet/initializer_generator.rb +35 -0
- data/lib/generators/mailjet/templates/mailjet.rb.erb +8 -0
- data/lib/mailjet/mailer.rb +36 -34
- data/lib/mailjet/resource.rb +18 -27
- data/lib/mailjet/version.rb +1 -1
- metadata +16 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7240913ecc6542f14a4c9cc7078347f4c55032a3
|
4
|
+
data.tar.gz: 70d23c920e3b4d1e45d843eab8034fff9e2086bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2bf10f5fd0dd62f207b1d84ee7bb178c31a2501a291b2983cfa391707e10e95b73d4e087fdf66713cf99cfd05f5863f51748eb1f11b8964339ad38073132f031
|
7
|
+
data.tar.gz: 1db8b006b9c5393fa185ba0dd36964e4bbb2395e9294a35d8ca76a2a170a2a8f397e623c1a9838c02e219a30b43f1214929058ea1ca9a0706d52d4150be809b1
|
data/README.md
CHANGED
@@ -103,6 +103,13 @@ end
|
|
103
103
|
|
104
104
|
`default_from` is optional if you send emails with `:mailjet`'s SMTP (below)
|
105
105
|
|
106
|
+
But if you are using Mailjet with Rails, you can simply generate it:
|
107
|
+
|
108
|
+
```shell
|
109
|
+
$ rails generate mailjet:initializer
|
110
|
+
```
|
111
|
+
|
112
|
+
|
106
113
|
### Send emails via the Send API
|
107
114
|
|
108
115
|
Find more about the Mailjet Send API in the [official guides](http://dev.mailjet.com/guides/?ruby#choose-sending-method)
|
@@ -229,7 +236,7 @@ class UserMailer < ApplicationMailer
|
|
229
236
|
end
|
230
237
|
end
|
231
238
|
```
|
232
|
-
For sending email, you can call the method
|
239
|
+
For sending email, you can call the method:
|
233
240
|
```ruby
|
234
241
|
# In this example, we are sending the email immediately
|
235
242
|
UserMailer.welcome_email.deliver_now!
|
@@ -360,15 +367,15 @@ Mailjet::Contact_managemanycontacts.find(nil, 34062)
|
|
360
367
|
|
361
368
|
## Send emails through API
|
362
369
|
|
363
|
-
In order to send emails through the API, you just have to `create` a new `
|
370
|
+
In order to send emails through the API, you just have to `create` a new `Send` resource.
|
364
371
|
|
365
372
|
``` ruby
|
366
|
-
Mailjet::
|
373
|
+
Mailjet::Send.create(from_email: "me@example.com", to: "you@example.com", subject: "Mailjet is awesome", text_part: "Yes, it is!")
|
367
374
|
```
|
368
375
|
|
369
376
|
If you want to send it to multiple recipients, just use an array:
|
370
377
|
``` ruby
|
371
|
-
Mailjet::
|
378
|
+
Mailjet::Send.create(from_email: "me@example.com", to: "you@example.com, someone-else@example.com", subject: "Mailjet is awesome", text_part: "Yes, it is!")
|
372
379
|
```
|
373
380
|
|
374
381
|
In order to Mailjet modifiers, you cannot use the regular form of Ruby 2 hashes. Instead, use a String `e.g.: 'mj-prio' => 2` or a quoted symbol `e.g.: 'mj-prio' => 2`.
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Mailjet
|
2
|
+
class InitializerGenerator < Rails::Generators::Base
|
3
|
+
desc 'This generator creates an initializer file mailjet.rb at config/initializers'
|
4
|
+
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
|
7
|
+
def generate_initializer_file
|
8
|
+
config_file_path = 'config/initializers/mailjet.rb'
|
9
|
+
|
10
|
+
say('Hey! We’re about to configure your Mailjet credentials for your application.')
|
11
|
+
say('You can find them on your account (https://app.mailjet.com/account/api_keys).')
|
12
|
+
say('Please help yourself by providing some intel:')
|
13
|
+
|
14
|
+
@api_key = ask('API key: ')
|
15
|
+
@secret_key = ask('Secret key: ')
|
16
|
+
@default_from = ask('Sender address:')
|
17
|
+
|
18
|
+
say("Don't forget that your sender address '#{@default_from}' has to be validated first on https://app.mailjet.com/account/sender.")
|
19
|
+
|
20
|
+
if @api_v3_1 = yes?('Do you want to use Mailjet API v3.1 for sending your emails? (y/n)')
|
21
|
+
@api_v3_1_notice = %{
|
22
|
+
Mailjet API v3.1 is at the moment limited to Send API.
|
23
|
+
We’ve not set the version to it directly since there is no other endpoint in that version.
|
24
|
+
We recommend you create a dedicated instance of the wrapper set with it to send your emails.
|
25
|
+
If you're only using the gem to send emails, then you can safely set it to this version.
|
26
|
+
Otherwise, you can remove the dedicated line into #{config_file_path}.
|
27
|
+
|
28
|
+
}
|
29
|
+
say(@api_v3_1_notice)
|
30
|
+
end
|
31
|
+
|
32
|
+
template 'mailjet.rb.erb', config_file_path
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# kindly generated by appropriated Rails generator
|
2
|
+
Mailjet.configure do |config|
|
3
|
+
config.api_key = '<%= @api_key %>'
|
4
|
+
config.secret_key = '<%= @secret_key %>'
|
5
|
+
config.default_from = '<%= @default_from %>'
|
6
|
+
<% if @api_v3_1 %><%= @api_v3_1_notice.split("\n").reject(&:empty?).map{ |l| ' # ' + l }.join("\n") %>
|
7
|
+
config.api_version = 'v3.1'<% end %>
|
8
|
+
end
|
data/lib/mailjet/mailer.rb
CHANGED
@@ -26,46 +26,48 @@ ActionMailer::Base.add_delivery_method :mailjet, Mailjet::Mailer
|
|
26
26
|
# Mailjet sends API expects a JSON payload as the input.
|
27
27
|
# The deliver methods maps the Mail::Message attributes to the MailjetSend API JSON expected structure
|
28
28
|
class Mailjet::APIMailer
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
)
|
29
|
+
V3_0_PERMITTED_OPTIONS = [
|
30
|
+
:recipients, :'mj-prio', :'mj-campaign', :'mj-deduplicatecampaign',
|
31
|
+
:'mj-templatelanguage', :'mj-templateerrorreporting', :'mj-templateerrordeliver', :'mj-templateid',
|
32
|
+
:'mj-trackopen', :'mj-trackclick',
|
33
|
+
:'mj-customid', :'mj-eventpayload', :vars, :headers,
|
34
|
+
]
|
35
|
+
|
36
|
+
V3_1_PERMITTED_OPTIONS = [
|
37
|
+
:'Priority', :'CustomCampaign', :'DeduplicateCampaign',
|
38
|
+
:'TemplateLanguage', :'TemplateErrorReporting', :'TemplateErrorDeliver', :'TemplateID',
|
39
|
+
:'TrackOpens', :'TrackClicks',
|
40
|
+
:'CustomID', :'EventPayload', :'Variables', :'Headers',
|
41
|
+
]
|
42
|
+
|
43
|
+
CONNECTION_PERMITTED_OPTIONS = [:api_key, :secret_key]
|
44
|
+
|
45
|
+
def initialize(opts = {})
|
46
|
+
options = HashWithIndifferentAccess.new(opts)
|
47
|
+
|
48
|
+
@version = options[:version]
|
49
|
+
@delivery_method_options_v3_0 = options.slice(*V3_0_PERMITTED_OPTIONS)
|
50
|
+
@delivery_method_options_v3_1 = options.slice(*V3_1_PERMITTED_OPTIONS)
|
51
|
+
@connection_options = options.slice(*CONNECTION_PERMITTED_OPTIONS)
|
50
52
|
end
|
51
53
|
|
52
|
-
def deliver!(mail,
|
54
|
+
def deliver!(mail, opts = {})
|
55
|
+
options = HashWithIndifferentAccess.new(opts)
|
53
56
|
|
54
|
-
|
55
|
-
|
56
|
-
end
|
57
|
+
# Mailjet Send API does not support full from. Splitting the from field into two: name and email address
|
58
|
+
mail[:from] ||= Mailjet.config.default_from if Mailjet.config.default_from
|
57
59
|
|
58
|
-
if (
|
59
|
-
|
60
|
-
end
|
60
|
+
# add `@connection_options` in `options` only if not exist yet (values in `options` prime)
|
61
|
+
options.reverse_merge!(@connection_options)
|
61
62
|
|
62
|
-
#
|
63
|
-
|
64
|
-
|
65
|
-
|
63
|
+
# add `@version` in options if set
|
64
|
+
options[:version] = @version if @version
|
65
|
+
|
66
|
+
# `options[:version]` primes on global config
|
67
|
+
version = options[:version] || Mailjet.config.api_version
|
66
68
|
|
67
|
-
if (
|
68
|
-
Mailjet::Send.create({:Messages => [setContentV3_1(mail)]}, options)
|
69
|
+
if (version == 'v3.1')
|
70
|
+
Mailjet::Send.create({ :Messages => [setContentV3_1(mail)] }, options)
|
69
71
|
else
|
70
72
|
Mailjet::Send.create(setContentV3_0(mail), options)
|
71
73
|
end
|
data/lib/mailjet/resource.rb
CHANGED
@@ -20,6 +20,9 @@ module Mailjet
|
|
20
20
|
module Resource
|
21
21
|
extend ActiveSupport::Concern
|
22
22
|
|
23
|
+
# define here available options for filtering
|
24
|
+
OPTIONS = [:version, :url, :perform_api_call, :api_key, :secret_key]
|
25
|
+
|
23
26
|
NON_JSON_URLS = ['v3/send/message'] # urls that don't accept JSON input
|
24
27
|
|
25
28
|
included do
|
@@ -56,7 +59,7 @@ module Mailjet
|
|
56
59
|
end
|
57
60
|
|
58
61
|
def all(params = {}, options = {})
|
59
|
-
opts =
|
62
|
+
opts = define_options(options)
|
60
63
|
params = format_params(params)
|
61
64
|
response = connection(opts).get(default_headers.merge(params: params))
|
62
65
|
attribute_array = parse_api_json(response)
|
@@ -64,7 +67,7 @@ module Mailjet
|
|
64
67
|
end
|
65
68
|
|
66
69
|
def count(options = {})
|
67
|
-
opts =
|
70
|
+
opts = define_options(options)
|
68
71
|
response_json = connection(opts).get(default_headers.merge(params: {limit: 1, countrecords: 1}))
|
69
72
|
response_hash = ActiveSupport::JSON.decode(response_json)
|
70
73
|
response_hash['Total']
|
@@ -72,7 +75,7 @@ module Mailjet
|
|
72
75
|
|
73
76
|
def find(id, job_id = nil, options = {})
|
74
77
|
# if action method, ammend url to appropriate id
|
75
|
-
opts =
|
78
|
+
opts = define_options(options)
|
76
79
|
self.resource_path = create_action_resource_path(id, job_id) if self.action
|
77
80
|
#
|
78
81
|
attributes = parse_api_json(connection(opts)[id].get(default_headers)).first
|
@@ -88,7 +91,7 @@ module Mailjet
|
|
88
91
|
|
89
92
|
def create(attributes = {}, options = {})
|
90
93
|
# if action method, ammend url to appropriate id
|
91
|
-
opts =
|
94
|
+
opts = define_options(options)
|
92
95
|
self.resource_path = create_action_resource_path(attributes[:id]) if self.action
|
93
96
|
attributes.tap { |hs| hs.delete(:id) }
|
94
97
|
|
@@ -110,7 +113,7 @@ module Mailjet
|
|
110
113
|
|
111
114
|
def delete(id, options = {})
|
112
115
|
# if action method, ammend url to appropriate id
|
113
|
-
opts =
|
116
|
+
opts = define_options(options)
|
114
117
|
self.resource_path = create_action_resource_path(id) if self.action
|
115
118
|
connection(opts)[id].delete(default_headers)
|
116
119
|
end
|
@@ -211,26 +214,14 @@ module Mailjet
|
|
211
214
|
end
|
212
215
|
end
|
213
216
|
|
214
|
-
def
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
if options.key?(:url)
|
223
|
-
url = options[:url]
|
224
|
-
end
|
225
|
-
end
|
226
|
-
ret = {version: ver, url: url, perform_api_call: perform_api_call}
|
227
|
-
ret
|
228
|
-
end
|
229
|
-
|
230
|
-
def choose_version(options = {})
|
231
|
-
ver = options['version'] || Mailjet.config.api_version || version
|
232
|
-
|
233
|
-
ver
|
217
|
+
def define_options(options = {})
|
218
|
+
# merge default options with given ones on-the-fly
|
219
|
+
{
|
220
|
+
version: version || Mailjet.config.api_version,
|
221
|
+
url: Mailjet.config.end_point,
|
222
|
+
perform_api_call: Mailjet.config.perform_api_call
|
223
|
+
}
|
224
|
+
.merge(options.symbolize_keys.slice(*OPTIONS))
|
234
225
|
end
|
235
226
|
|
236
227
|
end
|
@@ -246,7 +237,7 @@ module Mailjet
|
|
246
237
|
end
|
247
238
|
|
248
239
|
def save(options = {})
|
249
|
-
opts = self.class.
|
240
|
+
opts = self.class.define_options(options)
|
250
241
|
|
251
242
|
if persisted?
|
252
243
|
# case where the entity is updated
|
@@ -297,7 +288,7 @@ module Mailjet
|
|
297
288
|
end
|
298
289
|
end
|
299
290
|
|
300
|
-
opts = self.class.
|
291
|
+
opts = self.class.define_options(options)
|
301
292
|
save(opts)
|
302
293
|
end
|
303
294
|
|
data/lib/mailjet/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mailjet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tyler Nappy
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2017-
|
14
|
+
date: 2017-07-03 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activesupport
|
@@ -277,6 +277,8 @@ files:
|
|
277
277
|
- MIT-LICENSE
|
278
278
|
- README.md
|
279
279
|
- Rakefile
|
280
|
+
- lib/generators/mailjet/initializer_generator.rb
|
281
|
+
- lib/generators/mailjet/templates/mailjet.rb.erb
|
280
282
|
- lib/mailjet.rb
|
281
283
|
- lib/mailjet/api_error.rb
|
282
284
|
- lib/mailjet/collection_proxy.rb
|
@@ -374,7 +376,17 @@ files:
|
|
374
376
|
homepage: http://www.mailjet.com
|
375
377
|
licenses: []
|
376
378
|
metadata: {}
|
377
|
-
post_install_message:
|
379
|
+
post_install_message: |2+
|
380
|
+
|
381
|
+
The Ruby wrapper for Mailjet has just been installed successfully, congrats!
|
382
|
+
Maybe you want to configure your credentials to use your account.
|
383
|
+
All informations available on https://github.com/mailjet/mailjet-gem.
|
384
|
+
But if you are using Rails, you'll be glad to generate it easily using:
|
385
|
+
|
386
|
+
$ rails generate mailjet:initializer
|
387
|
+
|
388
|
+
We hope you will enjoy Mailjet!
|
389
|
+
|
378
390
|
rdoc_options: []
|
379
391
|
require_paths:
|
380
392
|
- lib
|
@@ -390,7 +402,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
390
402
|
version: '0'
|
391
403
|
requirements: []
|
392
404
|
rubyforge_project:
|
393
|
-
rubygems_version: 2.
|
405
|
+
rubygems_version: 2.5.1
|
394
406
|
signing_key:
|
395
407
|
specification_version: 4
|
396
408
|
summary: Mailjet a powerful all-in-one email service provider clients can use to get
|