mailjet 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b099b2cb56312e539e49fe4ef484811cc78759d
4
- data.tar.gz: 8afee6d3003543cd89580ad10d2919966bf559f3
3
+ metadata.gz: b6f0712c222da5b6148645338771953d6885fb65
4
+ data.tar.gz: 238b87870601f1f7811d25fc8758a681d6f0e194
5
5
  SHA512:
6
- metadata.gz: c9bfa9d80dc50955a7694f280c7ad89695f26ee22bc01ac241e5f141d3e88734fb31902f9728b5faa697e812a3f4ae02bd0ae1a7d65beaefe69a47c0c7ca4343
7
- data.tar.gz: e768169fee0d10f1e4cc735ce796913332989531b960d509c585a7b51c070422d224108aac620dacbd39623a81ab74b3e8e6586aa2a5581c71d78d7240daaee6
6
+ metadata.gz: e8e4431ff38ec080662933322d3a4896dad4ccebb17fe0cfb7dd626c0dfcafef625c39710586f8e9bdf9c4bd6f9c021fc7b56de7f37c90a099bc6a1f653071d2
7
+ data.tar.gz: 10ab0c2ab2f02c868d866a1496aaa856c77b60a373de65e43d260ea0c847e6cda08667d89e308fdd9c3a4c33917ef7d9367bd856c7bbcd9b2da2009d2979c7f9
data/README.md CHANGED
@@ -91,16 +91,16 @@ Mailjet.configure do |config|
91
91
  end
92
92
  ```
93
93
 
94
- `domain` is needed if you send emails with :mailjet's SMTP (below)
95
94
 
96
95
  `default_from` is optional if you send emails with :mailjet's SMTP (below)
97
96
 
98
97
  ### Send emails with ActionMailer
98
+ A quick walkthrough to using Action Mailer from the documentation [HERE](http://guides.rubyonrails.org/action_mailer_basics.html)
99
99
 
100
- As easy as:
100
+ First set your delivery method:
101
101
 
102
102
  ```ruby
103
- # application.rb
103
+ # application.rb or config/environments specific settings, which take precedence
104
104
  config.action_mailer.delivery_method = :mailjet
105
105
 
106
106
  ```
@@ -114,6 +114,53 @@ config.action_mailer.delivery_method = :mailjet_api
114
114
 
115
115
  You can use mailjet specific options with `delivery_method_options` as detailed in the official [ActionMailer doc][actionmailerdoc]
116
116
 
117
+ Creating a Mailer:
118
+ ```ruby
119
+ $ rails generate mailer UserMailer
120
+
121
+ create app/mailers/user_mailer.rb
122
+ create app/mailers/application_mailer.rb
123
+ invoke erb
124
+ create app/views/user_mailer
125
+ create app/views/layouts/mailer.text.erb
126
+ create app/views/layouts/mailer.html.erb
127
+ invoke test_unit
128
+ create test/mailers/user_mailer_test.rb
129
+ create test/mailers/previews/user_mailer_preview.rb
130
+ ```
131
+
132
+ In the UserMailer class you can set up your email method:
133
+ ```ruby
134
+ #app/mailers/user_mailer.rb
135
+ class UserMailer < ApplicationMailer
136
+ def welcome_email()
137
+ mail(from: "me@mailjet.com", to: "you@mailjet.com",
138
+ subject: "This is a nice welcome email")
139
+ end
140
+ end
141
+
142
+ ```
143
+ There's also the ability to set [Mailjet custom headers](https://dev.mailjet.com/guides/send-api-guide/)
144
+ ```ruby
145
+ #app/mailers/user_mailer.rb
146
+ class UserMailer < ApplicationMailer
147
+ def welcome_email()
148
+ mail.header['X-MJ-CustomID'] = 'custom value'
149
+ mail.header['X-MJ-EventPayload'] = 'custom payload'
150
+ mail(from: "me@mailjet.com", to: "you@mailjet.com",
151
+ subject: "This is a nice welcome email")
152
+ end
153
+ end
154
+ ```
155
+ For sending email, you can call the method with a variety of MessageDelivery priorities:
156
+ ```ruby
157
+ #In this example, we are sending immediately
158
+ UserMailer.welcome_email.deliver_now!
159
+ ```
160
+ For more information on ActionMailer::MessageDeilvery, see the documentation [HERE](http://edgeapi.rubyonrails.org/classes/ActionMailer/MessageDelivery.html)
161
+
162
+
163
+
117
164
  ## Manage your campaigns
118
165
 
119
166
  This gem provide a convenient wrapper for consuming the mailjet API. The wrapper is highly inspired by [ActiveResource][activeresource] even though it does not depend on it.
@@ -207,7 +254,13 @@ Mailjet::MessageDelivery.create(from: "me@example.com", to: ["you@example.com",
207
254
 
208
255
  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`.
209
256
 
210
- You can check available params in the [official doc][send-api-doc].
257
+ In these modifiers, there is now the ability to add a Mailjet custom-id or Mailjet Custom payload using the following:
258
+ ```ruby
259
+ 'mj-customid' => "A useful custom ID"
260
+ 'mj-eventpayload' => '{"message": "hello world"}'
261
+ ```
262
+
263
+ For more information on custom properties and available params, see the [official doc][send-api-doc].
211
264
 
212
265
  ## Track email delivery
213
266
 
@@ -15,11 +15,22 @@ module Mailjet
15
15
  end
16
16
 
17
17
  def initialize(end_point, api_key, secret_key, options = {})
18
+ ##charles proxy
19
+ # RestClient.proxy = "http://127.0.0.1:8888"
20
+ ##
21
+ ##Output for debugging
22
+ # RestClient.log =
23
+ # Object.new.tap do |proxy|
24
+ # def proxy.<<(message)
25
+ # Rails.logger.info message
26
+ # end
27
+ # end
28
+ ##
18
29
  adapter_class = options[:adapter_class] || RestClient::Resource
19
-
20
30
  self.public_operations = options[:public_operations] || []
21
31
  self.read_only = options[:read_only]
22
- self.adapter = adapter_class.new(end_point, options.merge(user: api_key, password: secret_key))
32
+ # self.adapter = adapter_class.new(end_point, options.merge(user: api_key, password: secret_key, :verify_ssl => false, content_type: 'application/json'))
33
+ self.adapter = adapter_class.new(end_point, options.merge(user: api_key, password: secret_key, content_type: 'application/json'))
23
34
  end
24
35
 
25
36
  def get(additional_headers = {}, &block)
@@ -41,12 +52,13 @@ module Mailjet
41
52
  private
42
53
 
43
54
  def handle_api_call(method, additional_headers = {}, payload = {}, &block)
55
+ format_payload = (additional_headers[:content_type] == :json) ? payload.to_json : payload
44
56
  raise Mailjet::MethodNotAllowed unless method_allowed(method)
45
57
 
46
58
  if [:get, :delete].include?(method)
47
59
  @adapter.send(method, additional_headers, &block)
48
60
  else
49
- @adapter.send(method, payload, additional_headers, &block)
61
+ @adapter.send(method, format_payload, additional_headers, &block)
50
62
  end
51
63
  rescue RestClient::Exception => e
52
64
  handle_exeception(e, additional_headers, payload)
@@ -22,7 +22,7 @@ ActionMailer::Base.add_delivery_method :mailjet, Mailjet::Mailer
22
22
  class Mailjet::APIMailer
23
23
  def initialize(options = {})
24
24
  ActionMailer::Base.default(:from => Mailjet.config.default_from) if Mailjet.config.default_from.present?
25
- @delivery_method_options = options.slice(:'mj-prio', :'mj-campaign', :'mj-deduplicatecampaign', :'mj-trackopen', :'mj-trackclick', :'header')
25
+ @delivery_method_options = options.slice(:'mj-prio', :'mj-campaign', :'mj-deduplicatecampaign', :'mj-trackopen', :'mj-trackclick', :'mj-customid', :'mj-eventpayload', :'header')
26
26
  end
27
27
 
28
28
  def deliver!(mail)
@@ -43,7 +43,9 @@ class Mailjet::APIMailer
43
43
  to: mail.to,
44
44
  cc: mail.cc,
45
45
  bcc: mail.bcc,
46
- subject: mail.subject
46
+ subject: mail.subject,
47
+ 'mj-customid': mail['X-MJ-CustomID'] && mail['X-MJ-CustomID'].value,
48
+ 'mj-eventpayload': mail['X-MJ-EventPayload'] && mail['X-MJ-EventPayload'].value
47
49
  }.merge(content).merge(@delivery_method_options)
48
50
 
49
51
  Mailjet::MessageDelivery.create(payload)
@@ -5,6 +5,6 @@ module Mailjet
5
5
  include Mailjet::Resource
6
6
  self.resource_path = 'v3/send/message'
7
7
  self.public_operations = [:post]
8
- self.properties = [:from, :sender, :to, :cc, :bcc, :subject, :text, :html, :attachment, :inlineattachment, :header]
8
+ self.properties = [:from, :sender, :to, :cc, :bcc, :subject, :text, :html, :attachment, :inlineattachment, :header, :'mj-customid', :'mj-eventpayload', :'mj-trackclick']
9
9
  end
10
10
  end
@@ -19,10 +19,11 @@ module Mailjet
19
19
  extend ActiveSupport::Concern
20
20
 
21
21
  included do
22
- cattr_accessor :resource_path, :public_operations, :read_only, :filters, :properties, :action
22
+ cattr_accessor :resource_path, :public_operations, :read_only, :filters, :properties, :action, :non_json_urls
23
23
  cattr_writer :connection
24
24
 
25
25
  def self.connection
26
+ @non_json_urls = ["v3/send/message"] #urls that don't accept JSON input
26
27
  class_variable_get(:@@connection) || default_connection
27
28
  end
28
29
 
@@ -36,7 +37,11 @@ module Mailjet
36
37
  end
37
38
 
38
39
  def self.default_headers
39
- { accept: :json, accept_encoding: :deflate }
40
+ if @non_json_urls.include?(self.resource_path)#don't use JSON if Send API
41
+ { accept: :json, accept_encoding: :deflate }
42
+ else
43
+ { accept: :json, accept_encoding: :deflate, content_type: :json } #use JSON if *not* Send API
44
+ end
40
45
  end
41
46
  end
42
47
 
@@ -6,7 +6,7 @@ module Mailjet
6
6
  self.resource_path = 'v3/REST/contactdata'
7
7
  self.public_operations = [:get, :put, :post, :delete]
8
8
  self.filters = [:campaign, :contacts_list, :fields, :is_unsubscribed, :last_activity_at, :recipient, :status]
9
- self.properties = [:contact_id, :data, :id]
9
+ self.properties = [:contact_id, :data, :id, 'ContactID', 'Name', 'Value']
10
10
 
11
11
  end
12
12
  end
@@ -6,7 +6,7 @@ module Mailjet
6
6
  self.resource_path = 'v3/REST/manycontacts'
7
7
  self.public_operations = [:post]
8
8
  self.filters = []
9
- self.properties = [:action, :addresses, :errors, :force, :list, :recipients]
9
+ self.properties = [:action, :addresses, :errors, :force, :list_id, :recipients]
10
10
 
11
11
  end
12
12
  end
@@ -1,3 +1,3 @@
1
1
  module Mailjet
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.3"
3
3
  end
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.0.2
4
+ version: 1.0.3
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: 2015-01-20 00:00:00.000000000 Z
14
+ date: 2015-06-19 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
@@ -223,20 +223,6 @@ dependencies:
223
223
  - - ">="
224
224
  - !ruby/object:Gem::Version
225
225
  version: '0'
226
- - !ruby/object:Gem::Dependency
227
- name: debugger
228
- requirement: !ruby/object:Gem::Requirement
229
- requirements:
230
- - - ">="
231
- - !ruby/object:Gem::Version
232
- version: '0'
233
- type: :development
234
- prerelease: false
235
- version_requirements: !ruby/object:Gem::Requirement
236
- requirements:
237
- - - ">="
238
- - !ruby/object:Gem::Version
239
- version: '0'
240
226
  - !ruby/object:Gem::Dependency
241
227
  name: rspec
242
228
  requirement: !ruby/object:Gem::Requirement
@@ -382,7 +368,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
382
368
  version: '0'
383
369
  requirements: []
384
370
  rubyforge_project:
385
- rubygems_version: 2.2.2
371
+ rubygems_version: 2.4.5
386
372
  signing_key:
387
373
  specification_version: 4
388
374
  summary: Mailjet a powerful all-in-one email service provider clients can use to get