mailtrap 1.2.0 → 1.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e4f1415f049fa2132b1716a70d48c1e6fd5650d4fa263b15fe2339c024053abd
4
- data.tar.gz: e6a299b5d04aeeb2ed80c0b47bf3f1177d5934ef214d0499a9c8d4c8f17a5f7c
3
+ metadata.gz: c02915dc1ea123fb592af56b9c553cb97e6137f0555b98f965f3a8cf1dd1d229
4
+ data.tar.gz: 8e7da7be2313f3e3766512e5c4014f90d1f8f1ddb271cbd255494252b6eda161
5
5
  SHA512:
6
- metadata.gz: b594f448ac1fee0581ebac86107572e69c7f77ec8acc558671977e1301b762bedb3e962514485cfba87089c5587c63475dd57e5744c2c6225da58a36525f3bad
7
- data.tar.gz: 94692a8b8a05646ddf49f92a13cfb630ed5e79176bed7f7b48f2f914b092becfd422ba21c38c5dddb6e802261d235c6e8ac2f2cdb190a0e3bc4c1d6339156b72
6
+ metadata.gz: 962e1a2227a79b264bd637f643ffbf326c03d56ba1736a406869fda693eb67c5ffed3797cacd1862403e034ba543c44094829fe45ec36c6fcfa2e96ecdd554c3
7
+ data.tar.gz: b568ff9976cba7311ae02118bbbe5b825230743facd0094921fa3ac58d4fe4d8132c9b9bbc5dca4c6d60fc798fa18d8508149a871949de971e621af50c386177
data/.rubocop.yml CHANGED
@@ -12,6 +12,9 @@ Layout/LineLength:
12
12
  Naming/MethodParameterName:
13
13
  MinNameLength: 2
14
14
 
15
+ Naming/VariableNumber:
16
+ EnforcedStyle: snake_case
17
+
15
18
  RSpec/MultipleExpectations:
16
19
  Max: 4
17
20
 
data/CHANGELOG.md CHANGED
@@ -1,24 +1,31 @@
1
- ## [1.0.0] - 2022-06-14
1
+ ## [1.2.2] - 2023-11-01
2
2
 
3
- - Initial release
3
+ - Improved error handling
4
4
 
5
- ## [1.0.1] - 2022-06-20
5
+ ## [1.2.1] - 2023-04-12
6
6
 
7
- - Update packed files list
7
+ - Set custom user agent
8
+
9
+ ## [1.2.0] - 2023-01-27
10
+
11
+ - Breaking changes:
12
+ - move `Mailtrap::Sending::Mail` class to `Mailtrap::Mail::Base`
13
+ - move `Mailtrap::Sending::Convert` to `Mailtrap::Mail`
14
+ - Add mail gem 2.8 support
15
+ - Add email template support
8
16
 
17
+ ## [1.1.1] - 2022-10-14
18
+
19
+ - Fix custom port and host usage
9
20
 
10
21
  ## [1.1.0] - 2022-07-22
11
22
 
12
23
  - Add ActionMailer support
13
24
 
14
- ## [1.1.1] - 2022-10-14
25
+ ## [1.0.1] - 2022-06-20
15
26
 
16
- - Fix custom port and host usage
27
+ - Update packed files list
17
28
 
18
- ## [1.2.0] - 2023-01-27
29
+ ## [1.0.0] - 2022-06-14
19
30
 
20
- - Breaking changes:
21
- - move `Mailtrap::Sending::Mail` class to `Mailtrap::Mail::Base`
22
- - move `Mailtrap::Sending::Convert` to `Mailtrap::Mail`
23
- - Add mail gem 2.8 support
24
- - Add email template support
31
+ - Initial release
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mailtrap (1.2.0)
4
+ mailtrap (1.2.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -130,6 +130,20 @@ mail(
130
130
  )
131
131
  ```
132
132
 
133
+ #### Content-Transfer-Encoding
134
+
135
+ `mailtrap` gem uses Mailtrap API to send emails. Mailtrap API does not try to
136
+ replicate SMTP. That is why you should expect some limitations when it comes to
137
+ sending. For example, `/api/send` endpoint ignores `Content-Transfer-Encoding`
138
+ (see `headers` in the [API documentation](https://railsware.stoplight.io/docs/mailtrap-api-docs/67f1d70aeb62c-send-email)).
139
+ Meaning your recipients will receive emails only in the default encoding which
140
+ is `quoted-printable`, if you send with Mailtrap API.
141
+
142
+ For those who does need to use `7bit` or any other encoding, SMTP provides
143
+ better flexibility in that regard. Go to your _Mailtrap account_ → _Email Sending_
144
+ → _Sending Domains_ → _Your domain_ → _SMTP/API Settings_ to find the SMTP
145
+ configuration example.
146
+
133
147
  ## Development
134
148
 
135
149
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -38,20 +38,31 @@ module Mailtrap
38
38
  request.body = body
39
39
  request['Authorization'] = "Bearer #{api_key}"
40
40
  request['Content-Type'] = 'application/json'
41
+ request['User-Agent'] = 'mailtrap-ruby (https://github.com/railsware/mailtrap-ruby)'
41
42
 
42
43
  request
43
44
  end
44
45
 
45
- def handle_response(response)
46
- case response.code
47
- when '200'
46
+ def handle_response(response) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
47
+ case response
48
+ when Net::HTTPOK
48
49
  json_response(response.body)
49
- when '400'
50
+ when Net::HTTPBadRequest
50
51
  raise Mailtrap::Sending::Error, json_response(response.body)[:errors]
51
- when '401'
52
+ when Net::HTTPUnauthorized
52
53
  raise Mailtrap::Sending::AuthorizationError, json_response(response.body)[:errors]
53
- else
54
+ when Net::HTTPForbidden
55
+ raise Mailtrap::Sending::RejectionError, json_response(response.body)[:errors]
56
+ when Net::HTTPPayloadTooLarge
57
+ raise Mailtrap::Sending::MailSizeError, ['message too large']
58
+ when Net::HTTPTooManyRequests
59
+ raise Mailtrap::Sending::RateLimitError, ['too many requests']
60
+ when Net::HTTPClientError
61
+ raise Mailtrap::Sending::Error, ['client error']
62
+ when Net::HTTPServerError
54
63
  raise Mailtrap::Sending::Error, ['server error']
64
+ else
65
+ raise Mailtrap::Sending::Error, ["unexpected status code=#{response.code}"]
55
66
  end
56
67
  end
57
68
 
@@ -17,6 +17,21 @@ module Mailtrap
17
17
  end
18
18
  end
19
19
 
20
+ # AuthorizationError is raised when invalid token is used.
20
21
  class AuthorizationError < Error; end
22
+
23
+ # MailSizeError is raised when mail is too large.
24
+ class MailSizeError < Error; end
25
+
26
+ # RateLimitError is raised when client performing too many requests.
27
+ class RateLimitError < Error; end
28
+
29
+ # RejectionError is raised when server refuses to process the request. Use
30
+ # error message to debug the problem.
31
+ #
32
+ # *Some* possible reasons:
33
+ # * Account is banned
34
+ # * Domain is not verified
35
+ class RejectionError < Error; end
21
36
  end
22
37
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mailtrap
4
- VERSION = '1.2.0'
4
+ VERSION = '1.2.2'
5
5
  end
data/mailtrap.gemspec ADDED
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/mailtrap/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'mailtrap'
7
+ spec.version = Mailtrap::VERSION
8
+ spec.authors = ['Railsware Products Studio LLC']
9
+ spec.email = ['support@mailtrap.io']
10
+
11
+ spec.summary = 'Official mailtrap.io API client'
12
+ spec.description = 'Official mailtrap.io API client'
13
+ spec.homepage = 'https://github.com/railsware/mailtrap-ruby'
14
+ spec.license = 'MIT'
15
+ spec.required_ruby_version = '>= 2.7.0'
16
+
17
+ spec.metadata['homepage_uri'] = spec.homepage
18
+ spec.metadata['source_code_uri'] = 'https://github.com/railsware/mailtrap-ruby'
19
+ spec.metadata['changelog_uri'] = 'https://github.com/railsware/mailtrap-ruby/blob/main/CHANGELOG.md'
20
+ spec.metadata['rubygems_mfa_required'] = 'true'
21
+
22
+ # Specify which files should be added to the gem when it is released.
23
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
24
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
25
+ `git ls-files -z`.split("\x0").reject do |f|
26
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|github|travis|circleci)|appveyor)})
27
+ end
28
+ end
29
+ spec.require_paths = ['lib']
30
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailtrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Railsware Products Studio LLC
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-31 00:00:00.000000000 Z
11
+ date: 2023-11-09 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Official mailtrap.io API client
14
14
  email:
@@ -39,6 +39,7 @@ files:
39
39
  - lib/mailtrap/sending/attachment.rb
40
40
  - lib/mailtrap/sending/client.rb
41
41
  - lib/mailtrap/version.rb
42
+ - mailtrap.gemspec
42
43
  homepage: https://github.com/railsware/mailtrap-ruby
43
44
  licenses:
44
45
  - MIT