mailtrap 2.0.0 → 2.1.1

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
  SHA256:
3
- metadata.gz: 7529f2a048f1670c6eb22f04a9308e17fb3072a0bcacdff87f3772e45f792201
4
- data.tar.gz: bc71abbd0af5a9c79d719aaaa69671aa836ec00f3a42c1c94991605ab803494d
3
+ metadata.gz: 30f80c3c771f5d73e22d3731d3f8d619793be03b378f48251e0e17e0e33d5d60
4
+ data.tar.gz: 41523de1f211b8ef4900efe6abd2343afb67803921fe495372c1d780d5b0f6fa
5
5
  SHA512:
6
- metadata.gz: ad794ce35f915afd6ff52da55278c21146630f8f05a5f544477dbeb53c9eb7cf3277632b0f3584c909c6b3d8f2bd339c575f1d32da5065b86f88450053e716c1
7
- data.tar.gz: f5b564ce76bc6d9157c5e58654cbfe54ee7f1cf169b53b2d3856ecf8fda1cd7b1fef6becc6eac2ed6bf3bbbed29eb63b8bcfb8c58fb237e37d4b68e43a78a020
6
+ metadata.gz: 781f8682fec57e56274d6de148bf24cc2d21ae8582e31a00585eaceb15481cf8b8508f9f1ba7f32b54e71c3c18b5062a6f2be407f5e14df0b78b5038a1086e9e
7
+ data.tar.gz: 1f22fc8e1c76efb7e0050d68b731ea0ceba6a65a8d37cea1da72369d41287f657492e005683648b1b7279e15e059f6c14a4ec724015763f2d212bde1407dd097
data/.rubocop.yml CHANGED
@@ -1,10 +1,16 @@
1
- require: rubocop-rspec
1
+ require:
2
+ - rubocop-rake
3
+ - rubocop-rspec
4
+
5
+ inherit_mode:
6
+ merge:
7
+ - Exclude
2
8
 
3
9
  AllCops:
4
- TargetRubyVersion: 2.7
10
+ TargetRubyVersion: 3.0
5
11
  NewCops: enable
6
12
  Exclude:
7
- - 'gemfiles/**/*'
13
+ - "gemfiles/**/*"
8
14
 
9
15
  Layout/LineLength:
10
16
  Max: 120
@@ -34,8 +40,8 @@ Style/StringLiteralsInInterpolation:
34
40
 
35
41
  Style/FrozenStringLiteralComment:
36
42
  Exclude:
37
- - 'examples/**/*'
43
+ - "examples/**/*"
38
44
 
39
45
  Style/TrailingCommaInHashLiteral:
40
46
  Exclude:
41
- - 'examples/**/*'
47
+ - "examples/**/*"
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## [2.1.1] - 2024-12-11
2
+
3
+ - Improved handling of empty `from`
4
+
5
+ ## [2.1.0] - 2024-07-08
6
+
7
+ - Fixed extraneous headers added by ActionMailer #21
8
+ - Dropped Ruby 2.7 support and added test coverage for Ruby up to 3.3 #22
9
+
1
10
  ## [2.0.0] - 2024-03-20
2
11
 
3
12
  - Added arguments for `Mailtrap::Client`
data/Gemfile CHANGED
@@ -11,6 +11,7 @@ gem 'rake', '~> 13.0'
11
11
  gem 'rspec', '~> 3.0'
12
12
  gem 'rspec-its'
13
13
  gem 'rubocop', '~> 1.21'
14
+ gem 'rubocop-rake', require: false
14
15
  gem 'rubocop-rspec', require: false
15
16
  gem 'vcr'
16
17
  gem 'webmock'
data/Gemfile.lock CHANGED
@@ -1,68 +1,91 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mailtrap (2.0.0)
4
+ mailtrap (2.1.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- addressable (2.8.0)
10
- public_suffix (>= 2.0.2, < 5.0)
11
- appraisal (2.4.1)
9
+ addressable (2.8.7)
10
+ public_suffix (>= 2.0.2, < 7.0)
11
+ appraisal (2.5.0)
12
12
  bundler
13
13
  rake
14
14
  thor (>= 0.14.0)
15
15
  ast (2.4.2)
16
- crack (0.4.5)
16
+ bigdecimal (3.1.8)
17
+ crack (1.0.0)
18
+ bigdecimal
17
19
  rexml
18
- diff-lcs (1.5.0)
19
- hashdiff (1.0.1)
20
- mail (2.7.1)
20
+ date (3.3.4)
21
+ diff-lcs (1.5.1)
22
+ hashdiff (1.1.0)
23
+ json (2.7.2)
24
+ language_server-protocol (3.17.0.3)
25
+ mail (2.8.1)
21
26
  mini_mime (>= 0.1.1)
22
- mini_mime (1.1.2)
23
- net-smtp (0.1.0)
24
- parallel (1.22.1)
25
- parser (3.1.2.0)
27
+ net-imap
28
+ net-pop
29
+ net-smtp
30
+ mini_mime (1.1.5)
31
+ net-imap (0.4.14)
32
+ date
33
+ net-protocol
34
+ net-pop (0.1.2)
35
+ net-protocol
36
+ net-protocol (0.2.2)
37
+ timeout
38
+ net-smtp (0.5.0)
39
+ net-protocol
40
+ parallel (1.25.1)
41
+ parser (3.3.3.0)
26
42
  ast (~> 2.4.1)
27
- public_suffix (4.0.7)
43
+ racc
44
+ public_suffix (5.1.1)
45
+ racc (1.8.0)
28
46
  rainbow (3.1.1)
29
- rake (13.0.6)
30
- regexp_parser (2.4.0)
31
- rexml (3.2.5)
32
- rspec (3.11.0)
33
- rspec-core (~> 3.11.0)
34
- rspec-expectations (~> 3.11.0)
35
- rspec-mocks (~> 3.11.0)
36
- rspec-core (3.11.0)
37
- rspec-support (~> 3.11.0)
38
- rspec-expectations (3.11.0)
47
+ rake (13.2.1)
48
+ regexp_parser (2.9.2)
49
+ rexml (3.3.9)
50
+ rspec (3.13.0)
51
+ rspec-core (~> 3.13.0)
52
+ rspec-expectations (~> 3.13.0)
53
+ rspec-mocks (~> 3.13.0)
54
+ rspec-core (3.13.0)
55
+ rspec-support (~> 3.13.0)
56
+ rspec-expectations (3.13.1)
39
57
  diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (~> 3.11.0)
58
+ rspec-support (~> 3.13.0)
41
59
  rspec-its (1.3.0)
42
60
  rspec-core (>= 3.0.0)
43
61
  rspec-expectations (>= 3.0.0)
44
- rspec-mocks (3.11.1)
62
+ rspec-mocks (3.13.1)
45
63
  diff-lcs (>= 1.2.0, < 2.0)
46
- rspec-support (~> 3.11.0)
47
- rspec-support (3.11.0)
48
- rubocop (1.29.1)
64
+ rspec-support (~> 3.13.0)
65
+ rspec-support (3.13.1)
66
+ rubocop (1.64.1)
67
+ json (~> 2.3)
68
+ language_server-protocol (>= 3.17.0)
49
69
  parallel (~> 1.10)
50
- parser (>= 3.1.0.0)
70
+ parser (>= 3.3.0.2)
51
71
  rainbow (>= 2.2.2, < 4.0)
52
72
  regexp_parser (>= 1.8, < 3.0)
53
73
  rexml (>= 3.2.5, < 4.0)
54
- rubocop-ast (>= 1.17.0, < 2.0)
74
+ rubocop-ast (>= 1.31.1, < 2.0)
55
75
  ruby-progressbar (~> 1.7)
56
- unicode-display_width (>= 1.4.0, < 3.0)
57
- rubocop-ast (1.18.0)
58
- parser (>= 3.1.1.0)
59
- rubocop-rspec (2.11.1)
60
- rubocop (~> 1.19)
61
- ruby-progressbar (1.11.0)
62
- thor (1.2.1)
63
- unicode-display_width (2.1.0)
64
- vcr (6.1.0)
65
- webmock (3.14.0)
76
+ unicode-display_width (>= 2.4.0, < 3.0)
77
+ rubocop-ast (1.31.3)
78
+ parser (>= 3.3.1.0)
79
+ rubocop-rake (0.6.0)
80
+ rubocop (~> 1.0)
81
+ rubocop-rspec (3.0.2)
82
+ rubocop (~> 1.61)
83
+ ruby-progressbar (1.13.0)
84
+ thor (1.3.1)
85
+ timeout (0.4.1)
86
+ unicode-display_width (2.5.0)
87
+ vcr (6.2.0)
88
+ webmock (3.23.1)
66
89
  addressable (>= 2.8.0)
67
90
  crack (>= 0.3.2)
68
91
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -79,9 +102,10 @@ DEPENDENCIES
79
102
  rspec (~> 3.0)
80
103
  rspec-its
81
104
  rubocop (~> 1.21)
105
+ rubocop-rake
82
106
  rubocop-rspec
83
107
  vcr
84
108
  webmock
85
109
 
86
110
  BUNDLED WITH
87
- 2.1.4
111
+ 2.5.14
data/README.md CHANGED
@@ -1,4 +1,9 @@
1
1
  [![test](https://github.com/railsware/mailtrap-ruby/actions/workflows/main.yml/badge.svg)](https://github.com/railsware/mailtrap-ruby/actions/workflows/main.yml)
2
+ [![docs](https://shields.io/badge/docs-rubydoc.info-blue)](https://rubydoc.info/gems/mailtrap)
3
+ [![gem](https://shields.io/gem/v/mailtrap)](https://rubygems.org/gems/mailtrap)
4
+ [![downloads](https://shields.io/gem/dt/mailtrap)](https://rubygems.org/gems/mailtrap)
5
+
6
+
2
7
 
3
8
  # Official Mailtrap Ruby client
4
9
 
@@ -26,7 +31,17 @@ Or install it yourself as:
26
31
 
27
32
  ## Usage
28
33
 
29
- ### Minimal
34
+ ### Ruby on Rails
35
+
36
+ ```ruby
37
+ # place this code in config/environments/production.rb:
38
+ config.action_mailer.delivery_method = :mailtrap
39
+
40
+ # then set the MAILTRAP_API_KEY environment variable
41
+ # using your hosting solution.
42
+ ```
43
+
44
+ ### Pure Ruby
30
45
 
31
46
  ```ruby
32
47
  require 'mailtrap'
@@ -46,7 +61,7 @@ client = Mailtrap::Client.new(api_key: 'your-api-key')
46
61
  client.send(mail)
47
62
  ```
48
63
 
49
- Refer to the [`examples`](examples) folder for other examples.
64
+ Refer to the [`examples`](examples) folder for more examples.
50
65
 
51
66
  - [Full](examples/full.rb)
52
67
  - [Email template](examples/email_template.rb)
@@ -55,15 +70,15 @@ Refer to the [`examples`](examples) folder for other examples.
55
70
  ### Content-Transfer-Encoding
56
71
 
57
72
  `mailtrap` gem uses Mailtrap API to send emails. Mailtrap API does not try to
58
- replicate SMTP. That is why you should expect some limitations when it comes to
73
+ replicate SMTP. That is why you should expect some limitations when it comes to
59
74
  sending. For example, `/api/send` endpoint ignores `Content-Transfer-Encoding`
60
75
  (see `headers` in the [API documentation](https://railsware.stoplight.io/docs/mailtrap-api-docs/67f1d70aeb62c-send-email)).
61
- Meaning your recipients will receive emails only in the default encoding which
76
+ Meaning your recipients will receive emails only in the default encoding which
62
77
  is `quoted-printable`, if you send with Mailtrap API.
63
78
 
64
- For those who does need to use `7bit` or any other encoding, SMTP provides
65
- better flexibility in that regard. Go to your _Mailtrap account_ → _Email Sending_
66
- → _Sending Domains_ → _Your domain_ → _SMTP/API Settings_ to find the SMTP
79
+ For those who does need to use `7bit` or any other encoding, SMTP provides
80
+ better flexibility in that regard. Go to your _Mailtrap account_ → _Email Sending_
81
+ → _Sending Domains_ → _Your domain_ → _SMTP/API Settings_ to find the SMTP
67
82
  configuration example.
68
83
 
69
84
  ## Migration guide v1 → v2
@@ -40,7 +40,7 @@ module Mailtrap
40
40
 
41
41
  def encode(io)
42
42
  string = io.read.encode('UTF-8') unless io.respond_to?(:binmode?) && io.binmode?
43
- Base64.encode64(string).gsub(/\n/, '')
43
+ Base64.encode64(string).gsub("\n", '')
44
44
  end
45
45
 
46
46
  def base64?(string)
data/lib/mailtrap/mail.rb CHANGED
@@ -8,9 +8,9 @@ require_relative 'mail/from_template'
8
8
  module Mailtrap
9
9
  module Mail
10
10
  class << self
11
- def from_message(message) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity
11
+ def from_message(message) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
12
12
  Mailtrap::Mail::Base.new(
13
- from: prepare_address(address_list(message['from'])&.addresses&.first),
13
+ from: prepare_addresses(address_list(message['from'])&.addresses).first,
14
14
  to: prepare_addresses(address_list(message['to'])&.addresses),
15
15
  cc: prepare_addresses(address_list(message['cc'])&.addresses),
16
16
  bcc: prepare_addresses(address_list(message['bcc'])&.addresses),
@@ -26,7 +26,7 @@ module Mailtrap
26
26
 
27
27
  private
28
28
 
29
- PROCESSED_HEADERS = %w[
29
+ SPECIAL_HEADERS = %w[
30
30
  from
31
31
  to
32
32
  cc
@@ -37,6 +37,19 @@ module Mailtrap
37
37
  contenttype
38
38
  ].freeze
39
39
 
40
+ # ActionMailer adds these headers by calling `Mail::Message#encoded`,
41
+ # as if the message is to be delivered via SMTP.
42
+ # Since the message will actually be generated on the Mailtrap side from its components,
43
+ # the headers are redundant and potentially conflicting, so we remove them.
44
+ ACTIONMAILER_ADDED_HEADERS = %w[
45
+ contenttransferencoding
46
+ date
47
+ messageid
48
+ mimeversion
49
+ ].freeze
50
+
51
+ HEADERS_TO_REMOVE = (SPECIAL_HEADERS + ACTIONMAILER_ADDED_HEADERS).freeze
52
+
40
53
  def address_list(header)
41
54
  header.respond_to?(:element) ? header.element : header&.address_list
42
55
  end
@@ -48,7 +61,7 @@ module Mailtrap
48
61
  def prepare_headers(message)
49
62
  message
50
63
  .header_fields
51
- .reject { |header| PROCESSED_HEADERS.include?(header.name.downcase.delete('-')) }
64
+ .reject { |header| HEADERS_TO_REMOVE.include?(header.name.downcase.delete('-')) }
52
65
  .to_h { |header| [header.name, header.value] }
53
66
  .compact
54
67
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mailtrap
4
- VERSION = '2.0.0'
4
+ VERSION = '2.1.1'
5
5
  end
data/mailtrap.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = 'Official mailtrap.io API client'
13
13
  spec.homepage = 'https://github.com/railsware/mailtrap-ruby'
14
14
  spec.license = 'MIT'
15
- spec.required_ruby_version = '>= 2.7.0'
15
+ spec.required_ruby_version = '>= 3.0.0'
16
16
 
17
17
  spec.metadata['homepage_uri'] = spec.homepage
18
18
  spec.metadata['source_code_uri'] = 'https://github.com/railsware/mailtrap-ruby'
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: 2.0.0
4
+ version: 2.1.1
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: 2024-03-28 00:00:00.000000000 Z
11
+ date: 2024-12-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Official mailtrap.io API client
14
14
  email:
@@ -19,7 +19,6 @@ extra_rdoc_files: []
19
19
  files:
20
20
  - ".rspec"
21
21
  - ".rubocop.yml"
22
- - ".ruby-version"
23
22
  - Appraisals
24
23
  - CHANGELOG.md
25
24
  - CODE_OF_CONDUCT.md
@@ -56,7 +55,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
56
55
  requirements:
57
56
  - - ">="
58
57
  - !ruby/object:Gem::Version
59
- version: 2.7.0
58
+ version: 3.0.0
60
59
  required_rubygems_version: !ruby/object:Gem::Requirement
61
60
  requirements:
62
61
  - - ">="
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 2.7.6