mailgun-ruby 1.2.12 → 1.2.14
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.
- checksums.yaml +4 -4
- data/.ruby-env.yml.example +1 -0
- data/CHANGELOG.md +21 -1
- data/README.md +4 -1
- data/docs/Domains.md +1 -1
- data/docs/EmailValidation.md +34 -0
- data/docs/Events.md +1 -1
- data/docs/MessageBuilder.md +1 -1
- data/docs/Messages.md +1 -1
- data/docs/OptInHandler.md +1 -1
- data/docs/Snippets.md +1 -1
- data/docs/Subaccounts.md +68 -0
- data/docs/Suppressions.md +10 -0
- data/docs/Webhooks.md +1 -1
- data/docs/railgun/EmailValidation.md +34 -0
- data/lib/mailgun/client.rb +23 -2
- data/lib/mailgun/domains/domains.rb +229 -1
- data/lib/mailgun/messages/message_builder.rb +8 -0
- data/lib/mailgun/subaccounts/subaccounts.rb +84 -0
- data/lib/mailgun/tags/tags.rb +120 -0
- data/lib/mailgun/version.rb +1 -1
- data/lib/mailgun/webhooks/webhooks.rb +20 -4
- data/lib/mailgun.rb +2 -0
- data/lib/railgun/mailer.rb +31 -0
- data/mailgun.gemspec +1 -1
- data/spec/integration/domains_spec.rb +244 -0
- data/spec/integration/events_spec.rb +1 -1
- data/spec/integration/mailer_spec.rb +2 -8
- data/spec/integration/subaccounts_spec.rb +58 -0
- data/spec/integration/tags.rb +139 -0
- data/spec/integration/webhook_spec.rb +10 -10
- data/spec/unit/messages/message_builder_spec.rb +11 -0
- data/spec/unit/railgun/content_type_spec.rb +17 -0
- data/vcr_cassettes/domains.yml +1068 -1
- data/vcr_cassettes/subaccounts.yml +270 -0
- data/vcr_cassettes/tags.yml +417 -0
- data/vcr_cassettes/webhooks.yml +156 -186
- metadata +15 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3905ad8ab1dae85ea3b87b10d2ac01700de085adab73d9e02373f4d54e70451d
|
4
|
+
data.tar.gz: e5794e301066318205a9ffb6de455d73642d3162b1ad75900cefed7aa95db798
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af8ed54564c2f13b818aa7da6a550b9000b4148ee437b108d01219d80b610580fde3a1973dd831db3ffd8b0dbe934d9288b479a335a5521e3f275815a9f30c8e
|
7
|
+
data.tar.gz: 5d11d20420e6333e9e71104fc529d80f19ed689cb300bc5b19ec4c2b855e9c92e24e59d7de83122d2bcdc910a0ec60f783ea277e011e8d375bb1e471be30802e
|
data/.ruby-env.yml.example
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,26 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
|
5
5
|
## [Unreleased]
|
6
6
|
|
7
|
+
## [1.2.14] - 2024-02-13
|
8
|
+
|
9
|
+
### Added
|
10
|
+
|
11
|
+
- Tags CRUD support (https://github.com/mailgun/mailgun-ruby/pull/316)
|
12
|
+
- Additional Domain Endpoints (https://github.com/mailgun/mailgun-ruby/pull/314)
|
13
|
+
- Webhooks Update Method (https://github.com/mailgun/mailgun-ruby/pull/305)
|
14
|
+
- Add support for AMP HTML (https://github.com/mailgun/mailgun-ruby/pull/304)
|
15
|
+
- Add support for AMP HTML (https://github.com/mailgun/mailgun-ruby/pull/304)
|
16
|
+
|
17
|
+
### Fixed
|
18
|
+
|
19
|
+
- Typos in docs, specs (- Add support for AMP HTML (https://github.com/mailgun/mailgun-ruby/pull/304)).
|
20
|
+
|
21
|
+
## [1.2.13] - 2023-11-25
|
22
|
+
|
23
|
+
### Added
|
24
|
+
|
25
|
+
- Subaccounts API support (https://github.com/mailgun/mailgun-ruby/pull/310).
|
26
|
+
|
7
27
|
## [1.2.12] - 2023-10-22
|
8
28
|
|
9
29
|
### Added
|
@@ -13,4 +33,4 @@ All notable changes to this project will be documented in this file.
|
|
13
33
|
### Fixed
|
14
34
|
|
15
35
|
- transform_for_mailgun block iteration issue (https://github.com/mailgun/mailgun-ruby/pull/298).
|
16
|
-
- Typos in several files (https://github.com/mailgun/mailgun-ruby/pull/297).
|
36
|
+
- Typos in several files (https://github.com/mailgun/mailgun-ruby/pull/297).
|
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.14'
|
23
23
|
```
|
24
24
|
|
25
25
|
Usage
|
@@ -188,8 +188,11 @@ This SDK includes the following components:
|
|
188
188
|
- [Domains](docs/Domains.md)
|
189
189
|
- [Webhooks](docs/Webhooks.md)
|
190
190
|
- [Events](docs/Events.md)
|
191
|
+
- [Snippets](docs/Snippets.md)
|
192
|
+
- [Subaccounts](docs/Subaccounts.md)
|
191
193
|
- [Suppressions](docs/Suppressions.md)
|
192
194
|
- [Templates](docs/Templates.md)
|
195
|
+
- [EmailValidation](docs/EmailValidation.md)
|
193
196
|
|
194
197
|
Message Builder allows you to quickly create the array of parameters, required
|
195
198
|
to send a message, by calling a methods for each parameter.
|
data/docs/Domains.md
CHANGED
@@ -53,5 +53,5 @@ See the [Suppressions](/docs/Suppressions.md) for usage samples and
|
|
53
53
|
|
54
54
|
More Documentation
|
55
55
|
------------------
|
56
|
-
See the official [Mailgun Domain Docs](https://documentation.mailgun.com/api-domains.html)
|
56
|
+
See the official [Mailgun Domain Docs](https://documentation.mailgun.com/en/latest/api-domains.html)
|
57
57
|
for more information
|
@@ -0,0 +1,34 @@
|
|
1
|
+
Mailgun - Email Validation
|
2
|
+
====================
|
3
|
+
|
4
|
+
This is the Mailgun Ruby *Email Validation* 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 - Email Validation
|
10
|
+
-----------------------
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
# First, instantiate the Mailgun Address. It pulls api key for Client from Mailgun.api_key variable.
|
14
|
+
email_validator = Mailgun::Address.new
|
15
|
+
|
16
|
+
# Given an arbitrary address, validates address based off defined checks.
|
17
|
+
# Response Example:
|
18
|
+
# {
|
19
|
+
# "address": "existingemail@realdomain.com",
|
20
|
+
# "is_disposable_address": false,
|
21
|
+
# "is_role_address": false,
|
22
|
+
# "reason": [],
|
23
|
+
# "result": "deliverable",
|
24
|
+
# "risk": "low"
|
25
|
+
# }
|
26
|
+
email_validator.validate('email@example.com')
|
27
|
+
|
28
|
+
|
29
|
+
```
|
30
|
+
|
31
|
+
More Documentation
|
32
|
+
------------------
|
33
|
+
See the official [Mailgun Email Validation Docs](https://documentation.mailgun.com/en/latest/api-email-validation.html)
|
34
|
+
for more information
|
data/docs/Events.md
CHANGED
@@ -42,5 +42,5 @@ last time you called "next".
|
|
42
42
|
|
43
43
|
More Documentation
|
44
44
|
------------------
|
45
|
-
See the official [Mailgun Docs](
|
45
|
+
See the official [Mailgun Docs](https://documentation.mailgun.com/en/latest/api-events.html)
|
46
46
|
for more information.
|
data/docs/MessageBuilder.md
CHANGED
@@ -104,5 +104,5 @@ message_ids = mb_obj.finalize
|
|
104
104
|
|
105
105
|
More Documentation
|
106
106
|
------------------
|
107
|
-
See the official [Mailgun Docs](
|
107
|
+
See the official [Mailgun Docs](https://documentation.mailgun.com/en/latest/api-sending.html)
|
108
108
|
for more information.
|
data/docs/Messages.md
CHANGED
@@ -103,5 +103,5 @@ message_ids = mb_obj.finalize
|
|
103
103
|
|
104
104
|
More Documentation
|
105
105
|
------------------
|
106
|
-
See the official [Mailgun Docs](https://documentation.mailgun.com/api-sending.html)
|
106
|
+
See the official [Mailgun Docs](https://documentation.mailgun.com/en/latest/api-sending.html)
|
107
107
|
for more information.
|
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/
|
103
|
+
See the official [Mailgun Docs](https://documentation.mailgun.com/) for more information.
|
data/docs/Snippets.md
CHANGED
@@ -513,7 +513,7 @@ Be sure to visit the Mailgun official
|
|
513
513
|
information about our API.
|
514
514
|
|
515
515
|
If you find a bug, please submit the issue in Github directly.
|
516
|
-
[Mailgun-Ruby Issues](https://github.com/mailgun/
|
516
|
+
[Mailgun-Ruby Issues](https://github.com/mailgun/mailgun-ruby/issues)
|
517
517
|
|
518
518
|
As always, if you need additional assistance, drop us a note at
|
519
519
|
[support@mailgun.com](mailto:support@mailgun.com).
|
data/docs/Subaccounts.md
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
Mailgun - [Subaccounts](https://help.mailgun.com/hc/en-us/articles/16380043681435-Subaccounts)
|
2
|
+
====================
|
3
|
+
|
4
|
+
Rails
|
5
|
+
-----
|
6
|
+
|
7
|
+
The library can be initialized with a Rails initializer containing similar:
|
8
|
+
```ruby
|
9
|
+
Mailgun.configure do |config|
|
10
|
+
config.api_key = 'your-secret-api-key'
|
11
|
+
end
|
12
|
+
```
|
13
|
+
Or have the initializer read your environment setting if you prefer.
|
14
|
+
|
15
|
+
```ruby
|
16
|
+
Mailgun.api_key = 'your-secret-api-key'
|
17
|
+
```
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
mb_obj = Mailgun::Subaccounts.new
|
21
|
+
|
22
|
+
# Get subaccounts list
|
23
|
+
mb_obj.get_subaccounts(limit: 10, skip: 0, sort: 'ask', enabled: true)
|
24
|
+
=> {"subaccounts"=>[{"id"=>"XYZ", "name"=>"test.subaccount1", "status"=>"open"}, {"id"=>"YYY", "name"=>"test.subaccount2", "status"=>"open"}], "total"=>2}
|
25
|
+
|
26
|
+
# Get subaccount information
|
27
|
+
mb_obj.info(subaccount_id)
|
28
|
+
=> {"subaccount"=>{"id"=>"XYZ", "name"=>"test.subaccount1", "status"=>"open"}
|
29
|
+
|
30
|
+
# Add Subaccount
|
31
|
+
mb_obj.create(name)
|
32
|
+
=> {"subaccount"=>{"id"=>"XYZ", "name"=>"test.subaccount1", "status"=>"open"}}
|
33
|
+
|
34
|
+
# Disable
|
35
|
+
mb_obj.disable(subaccount_id)
|
36
|
+
=> {"subaccount"=>{"id"=>"XYZ", "name"=>"test.subaccount1", "status"=>"disabled"}}
|
37
|
+
|
38
|
+
# Enable
|
39
|
+
mb_obj.enable(subaccount_id)
|
40
|
+
=> {"subaccount"=>{"id"=>"XYZ", "name"=>"test.subaccount1", "status"=>"open"}}
|
41
|
+
```
|
42
|
+
|
43
|
+
Primary accounts can make API calls on behalf of their subaccounts.
|
44
|
+
```ruby
|
45
|
+
# First, instantiate the Mailgun Client with your API key
|
46
|
+
mg_client = Mailgun::Client.new 'your-api-key'
|
47
|
+
mg_client.set_subaccount('SUBACCOUNT_ID')
|
48
|
+
|
49
|
+
# Define your message parameters
|
50
|
+
message_params = { from: 'bob@SUBACCOUNT_DOMAIN',
|
51
|
+
to: 'sally@example.com',
|
52
|
+
subject: 'The Ruby SDK is awesome!',
|
53
|
+
text: 'It is really easy to send a message!'
|
54
|
+
}
|
55
|
+
|
56
|
+
# Send your message through the client
|
57
|
+
# Note: This will not actually hit the API, and will return a generic OK response.
|
58
|
+
mg_client.send_message('SUBACCOUNT_DOMAIN', message_params)
|
59
|
+
|
60
|
+
# Reset subaccount for primary usage
|
61
|
+
mg_client.reset_subaccount
|
62
|
+
```
|
63
|
+
|
64
|
+
|
65
|
+
More Documentation
|
66
|
+
------------------
|
67
|
+
See the official [Mailgun Docs](https://documentation.mailgun.com/en/latest/subaccounts.html#subaccounts)
|
68
|
+
for more information.
|
data/docs/Suppressions.md
CHANGED
@@ -38,6 +38,16 @@ supp_client.list_complaints
|
|
38
38
|
|
39
39
|
----
|
40
40
|
|
41
|
+
To get the next or previous suppressions page:
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
supp_client.list_bounces # returns first *limit* records + next, previous pages urls
|
45
|
+
supp_client.next # returns next *limit* records
|
46
|
+
supp_client.prev # returns previous *limit* records
|
47
|
+
```
|
48
|
+
|
49
|
+
----
|
50
|
+
|
41
51
|
To batch-add a set of bounces:
|
42
52
|
|
43
53
|
```ruby
|
data/docs/Webhooks.md
CHANGED
@@ -36,5 +36,5 @@ hook.remove_all 'my.perfect.domain'
|
|
36
36
|
|
37
37
|
More Documentation
|
38
38
|
------------------
|
39
|
-
See the official [Mailgun Domain Docs](https://documentation.mailgun.com/api-webhooks.html)
|
39
|
+
See the official [Mailgun Domain Docs](https://documentation.mailgun.com/en/latest/api-webhooks.html)
|
40
40
|
for more information
|
@@ -0,0 +1,34 @@
|
|
1
|
+
Mailgun - Email Validation
|
2
|
+
====================
|
3
|
+
|
4
|
+
This is the Mailgun Ruby *Email Validation* 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 - Email Validation
|
10
|
+
-----------------------
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
# First, instantiate the Mailgun Address. It pulls api key for Client from Mailgun.api_key variable.
|
14
|
+
email_validator = Mailgun::Address.new
|
15
|
+
|
16
|
+
# Given an arbitrary address, validates address based off defined checks.
|
17
|
+
# Response Example:
|
18
|
+
# {
|
19
|
+
# "address": "existingemail@realdomain.com",
|
20
|
+
# "is_disposable_address": false,
|
21
|
+
# "is_role_address": false,
|
22
|
+
# "reason": [],
|
23
|
+
# "result": "deliverable",
|
24
|
+
# "risk": "low"
|
25
|
+
# }
|
26
|
+
email_validator.validate('email@example.com')
|
27
|
+
|
28
|
+
|
29
|
+
```
|
30
|
+
|
31
|
+
More Documentation
|
32
|
+
------------------
|
33
|
+
See the official [Mailgun Email Validation Docs](https://documentation.mailgun.com/en/latest/api-email-validation.html)
|
34
|
+
for more information
|
data/lib/mailgun/client.rb
CHANGED
@@ -9,6 +9,7 @@ module Mailgun
|
|
9
9
|
#
|
10
10
|
# See the Github documentation for full examples.
|
11
11
|
class Client
|
12
|
+
SUBACCOUNT_HEADER = 'X-Mailgun-On-Behalf-Of'.freeze
|
12
13
|
|
13
14
|
def initialize(api_key = Mailgun.api_key,
|
14
15
|
api_host = Mailgun.api_host || 'api.mailgun.net',
|
@@ -29,6 +30,7 @@ module Mailgun
|
|
29
30
|
RestClient.proxy = proxy_url
|
30
31
|
@http_client = RestClient::Resource.new(endpoint, rest_client_params)
|
31
32
|
@test_mode = test_mode
|
33
|
+
@api_version = api_version
|
32
34
|
end
|
33
35
|
|
34
36
|
# Enable test mode
|
@@ -50,6 +52,16 @@ module Mailgun
|
|
50
52
|
@http_client.options[:password] = api_key
|
51
53
|
end
|
52
54
|
|
55
|
+
# Add subaccount id to headers
|
56
|
+
def set_subaccount(subaccount_id)
|
57
|
+
@http_client.options[:headers] = { SUBACCOUNT_HEADER => subaccount_id }
|
58
|
+
end
|
59
|
+
|
60
|
+
# Reset subaccount for primary usage
|
61
|
+
def reset_subaccount
|
62
|
+
@http_client.options[:headers].delete(SUBACCOUNT_HEADER)
|
63
|
+
end
|
64
|
+
|
53
65
|
# Client is in test mode?
|
54
66
|
#
|
55
67
|
# @return [Boolean] Is the client set in test mode?
|
@@ -57,6 +69,11 @@ module Mailgun
|
|
57
69
|
@test_mode
|
58
70
|
end
|
59
71
|
|
72
|
+
# @return [String] client api version
|
73
|
+
def api_version
|
74
|
+
@api_version
|
75
|
+
end
|
76
|
+
|
60
77
|
# Provides a store of all the emails sent in test mode so you can check them.
|
61
78
|
#
|
62
79
|
# @return [Hash]
|
@@ -157,8 +174,12 @@ module Mailgun
|
|
157
174
|
# @param [String] resource_path This is the API resource you wish to interact
|
158
175
|
# with. Be sure to include your domain, where necessary.
|
159
176
|
# @return [Mailgun::Response] A Mailgun::Response object.
|
160
|
-
def delete(resource_path)
|
161
|
-
|
177
|
+
def delete(resource_path, params = nil)
|
178
|
+
if params
|
179
|
+
response = @http_client[resource_path].delete(params: params)
|
180
|
+
else
|
181
|
+
response = @http_client[resource_path].delete
|
182
|
+
end
|
162
183
|
Response.new(response)
|
163
184
|
rescue => err
|
164
185
|
raise communication_error err
|
@@ -95,8 +95,236 @@ module Mailgun
|
|
95
95
|
#
|
96
96
|
# Returns [Hash] of updated domain
|
97
97
|
def update(domain, options = {})
|
98
|
-
fail(ParameterError, 'No domain given to
|
98
|
+
fail(ParameterError, 'No domain given to update on Mailgun', caller) unless domain
|
99
99
|
@client.put("domains/#{domain}", options).to_h
|
100
100
|
end
|
101
|
+
|
102
|
+
# Public: Creates a new set of SMTP credentials for the defined domain.
|
103
|
+
#
|
104
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
105
|
+
# options - [Hash] of
|
106
|
+
# login - [String] The user name (ex. bob.bar)
|
107
|
+
# password - [String] A password for the SMTP credentials. (Length Min 5, Max 32)
|
108
|
+
#
|
109
|
+
# Returns [Hash] with message key
|
110
|
+
def create_smtp_credentials(domain, options = {})
|
111
|
+
fail(ParameterError, 'No domain given to create credentials on Mailgun', caller) unless domain
|
112
|
+
@client.post("domains/#{domain}/credentials", options).to_h
|
113
|
+
end
|
114
|
+
|
115
|
+
# Public: Updates the specified SMTP credentials.
|
116
|
+
#
|
117
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
118
|
+
# login - [String] The user name (ex. bob.bar)
|
119
|
+
# options - [Hash] of
|
120
|
+
# password - [String] A password for the SMTP credentials. (Length Min 5, Max 32)
|
121
|
+
#
|
122
|
+
# Returns [Hash] with message key
|
123
|
+
def update_smtp_credentials(domain, login, options = {})
|
124
|
+
fail(ParameterError, 'No domain given to update credentials on Mailgun', caller) unless domain
|
125
|
+
fail(ParameterError, 'No login given to update credentials on Mailgun', caller) unless login
|
126
|
+
@client.put("domains/#{domain}/credentials/#{login}", options).to_h
|
127
|
+
end
|
128
|
+
|
129
|
+
# Public: Deletes the defined SMTP credentials.
|
130
|
+
#
|
131
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
132
|
+
# login - [String] The user name (ex. bob.bar)
|
133
|
+
#
|
134
|
+
# Returns [Hash] with message and spec keys
|
135
|
+
def delete_smtp_credentials(domain, login)
|
136
|
+
fail(ParameterError, 'No domain given to delete credentials on Mailgun', caller) unless domain
|
137
|
+
fail(ParameterError, 'No login given to delete credentials on Mailgun', caller) unless login
|
138
|
+
@client.delete("domains/#{domain}/credentials/#{login}").to_h
|
139
|
+
end
|
140
|
+
|
141
|
+
# Public: Returns delivery connection settings for the defined domain.
|
142
|
+
#
|
143
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
144
|
+
#
|
145
|
+
# Returns [Hash] Information on the delivery connection settings
|
146
|
+
def get_domain_connection_settings(domain)
|
147
|
+
fail(ParameterError, 'No domain given to retrieve connections on Mailgun', caller) unless domain
|
148
|
+
@client.get("domains/#{domain}/connection").to_h
|
149
|
+
end
|
150
|
+
|
151
|
+
# Public: Updates the specified delivery connection settings for the defined domain.d
|
152
|
+
#
|
153
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
154
|
+
# options - [Hash] of
|
155
|
+
# require_tls - [Boolean] true or false. If true - requires the message only be sent over a TLS connection
|
156
|
+
# skip_verification - [Boolean] true or false. If true - the certificate and hostname will not be verified
|
157
|
+
# when trying to establish a TLS connection
|
158
|
+
#
|
159
|
+
# Returns [Hash] Information on the delivery connection settings
|
160
|
+
def update_domain_connection_settings(domain, options = {})
|
161
|
+
fail(ParameterError, 'No domain given to update connections on Mailgun', caller) unless domain
|
162
|
+
@client.put("domains/#{domain}/connection", options).to_h
|
163
|
+
end
|
164
|
+
|
165
|
+
# Public: Returns tracking settings for the defined domain.
|
166
|
+
#
|
167
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
168
|
+
#
|
169
|
+
# Returns [Hash] Information on the tracking settings
|
170
|
+
def get_domain_tracking_settings(domain)
|
171
|
+
fail(ParameterError, 'No domain given to retrieve tracking settings on Mailgun', caller) unless domain
|
172
|
+
@client.get("domains/#{domain}/tracking").to_h
|
173
|
+
end
|
174
|
+
|
175
|
+
# Public: Updates the open tracking settings for a domain.
|
176
|
+
#
|
177
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
178
|
+
# options - [Hash] of
|
179
|
+
# active - [Boolean] yes or no. If set to yes, a tracking pixel will be inserted below your HTML content.
|
180
|
+
# place_at_the_top - [Boolean] yes or no. If set to yes, tracking pixel will be moved to top of your HTML content.
|
181
|
+
#
|
182
|
+
# Returns [Hash] Information on the tracking open settings
|
183
|
+
def update_domain_tracking_open_settings(domain, options = {})
|
184
|
+
fail(ParameterError, 'No domain given to update tracking settings on Mailgun', caller) unless domain
|
185
|
+
@client.put("domains/#{domain}/tracking/open", options).to_h
|
186
|
+
end
|
187
|
+
|
188
|
+
# Public: Updates the click tracking settings for a domain.
|
189
|
+
#
|
190
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
191
|
+
# options - [Hash] of
|
192
|
+
# active - [Boolean] yes or no. If set to yes, links will be overwritten and pointed to our servers so we can track clicks.
|
193
|
+
#
|
194
|
+
# Returns [Hash] Information on the tracking click settings
|
195
|
+
def update_domain_tracking_click_settings(domain, options = {})
|
196
|
+
fail(ParameterError, 'No domain given to update tracking settings on Mailgun', caller) unless domain
|
197
|
+
@client.put("domains/#{domain}/tracking/click", options).to_h
|
198
|
+
end
|
199
|
+
|
200
|
+
# Public: Updates unsubscribe tracking settings for a domain.
|
201
|
+
#
|
202
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
203
|
+
# options - [Hash] of
|
204
|
+
# active - [Boolean] true or false.
|
205
|
+
# html_footer - [String] Custom HTML version of unsubscribe footer.
|
206
|
+
# text_footer - [String] Custom text version of unsubscribe footer.
|
207
|
+
#
|
208
|
+
# Returns [Hash] Information on the tracking unsubscribe settings
|
209
|
+
def update_domain_tracking_unsubscribe_settings(domain, options = {})
|
210
|
+
fail(ParameterError, 'No domain given to update tracking settings on Mailgun', caller) unless domain
|
211
|
+
@client.put("domains/#{domain}/tracking/unsubscribe", options).to_h
|
212
|
+
end
|
213
|
+
|
214
|
+
# Public: Change the DKIM authority for a domain.
|
215
|
+
#
|
216
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
217
|
+
# options - [Hash] of
|
218
|
+
# self - [Boolean] true - the domain will be the DKIM authority for itself even
|
219
|
+
# if the root domain is registered on the same mailgun account
|
220
|
+
#
|
221
|
+
# Returns [Hash] Information on the DKIM authority
|
222
|
+
def update_domain_dkim_authority(domain, options = {})
|
223
|
+
fail(ParameterError, 'No domain given to update tracking settings on Mailgun', caller) unless domain
|
224
|
+
@client.put("domains/#{domain}/dkim_authority", options).to_h
|
225
|
+
end
|
226
|
+
|
227
|
+
# Public: Update the DKIM selector for a domains
|
228
|
+
#
|
229
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
230
|
+
# options - [Hash] of
|
231
|
+
# dkim_selector - [String] change the DKIM selector for a domain.
|
232
|
+
#
|
233
|
+
# Returns [Hash] with message key
|
234
|
+
def update_domain_dkim_selector(domain, options = {})
|
235
|
+
fail(ParameterError, 'No domain given to update tracking settings on Mailgun', caller) unless domain
|
236
|
+
@client.put("domains/#{domain}/dkim_selector", options).to_h
|
237
|
+
end
|
238
|
+
|
239
|
+
# Public: Update the CNAME used for tracking opens and clicks
|
240
|
+
#
|
241
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
242
|
+
# options - [Hash] of
|
243
|
+
# web_prefix - [String] change the tracking CNAME for a domain.
|
244
|
+
#
|
245
|
+
# Returns [Hash] with message key
|
246
|
+
def update_domain_web_prefix(domain, options = {})
|
247
|
+
fail(ParameterError, 'No domain given to update tracking settings on Mailgun', caller) unless domain
|
248
|
+
@client.put("domains/#{domain}/web_prefix", options).to_h
|
249
|
+
end
|
250
|
+
|
251
|
+
# Public: Lists the domain keys for a specified signing domain / authority
|
252
|
+
#
|
253
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
254
|
+
#
|
255
|
+
# Returns [Hash] with domain keys data
|
256
|
+
def get_domain_keys(domain)
|
257
|
+
fail(ParameterError, 'Client api version must be v4', caller) unless @client.api_version == 'v4'
|
258
|
+
fail(ParameterError, 'No domain given to retrieve keys on Mailgun', caller) unless domain
|
259
|
+
@client.get("domains/#{domain}/keys").to_h
|
260
|
+
end
|
261
|
+
|
262
|
+
# Public: Activate a domain key for a specified authority and selector.
|
263
|
+
#
|
264
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
265
|
+
# selector - [String] The selector you want to activate for the domain key
|
266
|
+
#
|
267
|
+
# Returns [Hash] with message key and autority + selector data
|
268
|
+
def activate_domain_key(domain, selector)
|
269
|
+
fail(ParameterError, 'Client api version must be v4', caller) unless @client.api_version == 'v4'
|
270
|
+
fail(ParameterError, 'No domain given to update tracking settings on Mailgun', caller) unless domain
|
271
|
+
fail(ParameterError, 'No selector given to activate key on Mailgun', caller) unless selector
|
272
|
+
@client.put("domains/#{domain}/keys/#{selector}/activate", {}).to_h
|
273
|
+
end
|
274
|
+
|
275
|
+
# Public: Deactivate a domain key for a specified authority and selector
|
276
|
+
#
|
277
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
278
|
+
# selector - [String] The selector you want to activate for the domain key
|
279
|
+
#
|
280
|
+
# Returns [Hash] with message key and autority + selector data
|
281
|
+
def deactivate_domain_key(domain, selector)
|
282
|
+
fail(ParameterError, 'Client api version must be v4', caller) unless @client.api_version == 'v4'
|
283
|
+
fail(ParameterError, 'No domain given to update tracking settings on Mailgun', caller) unless domain
|
284
|
+
fail(ParameterError, 'No selector given to activate key on Mailgun', caller) unless selector
|
285
|
+
@client.put("domains/#{domain}/keys/#{selector}/deactivate", {}).to_h
|
286
|
+
end
|
287
|
+
|
288
|
+
# Public: Create a domain key
|
289
|
+
#
|
290
|
+
# options - [Hash] of
|
291
|
+
# signing_domain - [String] Name of the domain (ex. domain.com)
|
292
|
+
# selector - [String] Selector to be used for the new domain key
|
293
|
+
# bits - [Integer] Key size, can be 1024 or 2048
|
294
|
+
# pem - [String] Private key PEM
|
295
|
+
#
|
296
|
+
# Returns [Hash] with message key
|
297
|
+
def create_domain_key(options = {})
|
298
|
+
fail(ParameterError, 'Client api version must be v1', caller) unless @client.api_version == 'v1'
|
299
|
+
@client.post("dkim/keys", options).to_h
|
300
|
+
end
|
301
|
+
|
302
|
+
# Public: Delete a domain key.
|
303
|
+
#
|
304
|
+
# options - [Hash] of
|
305
|
+
# signing_domain - [Integer] Name of the domain (ex. domain.com)
|
306
|
+
# selector - [String] Name of the selector
|
307
|
+
#
|
308
|
+
# Returns [Hash] with message key
|
309
|
+
def delete_domain_key(options = {})
|
310
|
+
fail(ParameterError, 'Client api version must be v1', caller) unless @client.api_version == 'v1'
|
311
|
+
@client.delete("dkim/keys", options).to_h
|
312
|
+
end
|
313
|
+
|
314
|
+
# Public: Returns total stats for a given domains
|
315
|
+
#
|
316
|
+
# domain - [String] Name of the domain (ex. domain.com)
|
317
|
+
# options - [Hash] of
|
318
|
+
# event - [String] The type of the event.
|
319
|
+
# start - [String] The starting time. Should be in RFC 2822 or unix epoch format.
|
320
|
+
# end - [String] The ending date. Should be in RFC 2822 or unix epoch format
|
321
|
+
# resolution - [String] Can be either hour, day or month. Default: day
|
322
|
+
# duration - [String] Period of time with resoluton encoded
|
323
|
+
#
|
324
|
+
# Returns [Array] A list of domains (hash)
|
325
|
+
def get_domain_stats(domain, options = {})
|
326
|
+
fail(ParameterError, 'No domain given to list stats on Mailgun', caller) unless domain
|
327
|
+
@client.get("#{domain}/stats/total", options).to_h
|
328
|
+
end
|
101
329
|
end
|
102
330
|
end
|
@@ -116,6 +116,14 @@ module Mailgun
|
|
116
116
|
body_html(html_body)
|
117
117
|
end
|
118
118
|
|
119
|
+
# Set an AMP part for the message object
|
120
|
+
#
|
121
|
+
# @param [String] amp The AMP HTML for the email.
|
122
|
+
# @return [void]
|
123
|
+
def amp_html(amp = nil)
|
124
|
+
set_single('amp-html', amp)
|
125
|
+
end
|
126
|
+
|
119
127
|
# Adds a series of attachments, when called upon.
|
120
128
|
#
|
121
129
|
# @param [String|File] attachment A file object for attaching as an attachment.
|