mailtrap 2.1.0 → 2.1.2

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: 5423fd6ba2817ace06e724da478e925615f3c8b4dfcbf24eb271f6bb12fded4c
4
- data.tar.gz: b331be242b93d7176adf0ca92d01f33d0bc7a9407766d8d139d8bb39d7d2382b
3
+ metadata.gz: 314cfc7c3cd8a6e45f719fc3d8063a5ca9d9cb96109989d558699460c5246735
4
+ data.tar.gz: 6db332cea7a1c9e8409c22a47145b74b9a5a45d74cc34a3663bc138fd7bf52a7
5
5
  SHA512:
6
- metadata.gz: 9c2556e7ea3b7405ec76910a718ba949694563dabc4547fc6b33771bd52a2bd0e444e287bcc341c6c5e1bdab07bd12573c3ce9607cbcc84afbd8398aafbccf4c
7
- data.tar.gz: 06f0ea3e473461ad889e101540ba2d2a37cfda75ce3a4677ab58708ddae8ce4cae53d16426f4b30e54bf899e9a5f3cca0c46e0616c49b9da80be9c1e8c308c67
6
+ metadata.gz: 9d86a290cd93fea1c62a5bf5c5ee1d32a49bf23bd9736edf1d4cffe5d1c40d474b62cda3741deb388ff24e937eb036ce618605155f5b7e66f4a95918d400315e
7
+ data.tar.gz: 51548a285463a11ef0c408f9cb03d2621bb0ede07c75c63773218a85616fcd727724b15687389350fdaf4907f6c173a95fee1d17d4648c5f0d315817acf7bbec
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## [2.1.2] - 2024-12-13
2
+
3
+ - Improved handling of invalid `from`, `to`, `cc`, `bcc` headers when sending
4
+ with Action Mailer
5
+
6
+ ## [2.1.1] - 2024-12-11
7
+
8
+ - Improved handling of empty `from` header when sending with Action Mailer
9
+
1
10
  ## [2.1.0] - 2024-07-08
2
11
 
3
12
  - Fixed extraneous headers added by ActionMailer #21
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mailtrap (2.1.0)
4
+ mailtrap (2.1.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -46,8 +46,7 @@ GEM
46
46
  rainbow (3.1.1)
47
47
  rake (13.2.1)
48
48
  regexp_parser (2.9.2)
49
- rexml (3.3.1)
50
- strscan
49
+ rexml (3.3.9)
51
50
  rspec (3.13.0)
52
51
  rspec-core (~> 3.13.0)
53
52
  rspec-expectations (~> 3.13.0)
@@ -82,7 +81,6 @@ GEM
82
81
  rubocop-rspec (3.0.2)
83
82
  rubocop (~> 1.61)
84
83
  ruby-progressbar (1.13.0)
85
- strscan (3.1.0)
86
84
  thor (1.3.1)
87
85
  timeout (0.4.1)
88
86
  unicode-display_width (2.5.0)
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
data/lib/mailtrap/mail.rb CHANGED
@@ -4,13 +4,16 @@ require 'base64'
4
4
 
5
5
  require_relative 'mail/base'
6
6
  require_relative 'mail/from_template'
7
+ require_relative 'errors'
7
8
 
8
9
  module Mailtrap
9
10
  module Mail
10
11
  class << self
11
- def from_message(message) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity
12
+ # @param message [Mail::Message]
13
+ # @return [Mailtrap::Mail::Base]
14
+ def from_message(message) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
12
15
  Mailtrap::Mail::Base.new(
13
- from: prepare_address(address_list(message['from'])&.addresses&.first),
16
+ from: prepare_addresses(address_list(message['from'])&.addresses).first,
14
17
  to: prepare_addresses(address_list(message['to'])&.addresses),
15
18
  cc: prepare_addresses(address_list(message['cc'])&.addresses),
16
19
  bcc: prepare_addresses(address_list(message['bcc'])&.addresses),
@@ -50,10 +53,19 @@ module Mailtrap
50
53
 
51
54
  HEADERS_TO_REMOVE = (SPECIAL_HEADERS + ACTIONMAILER_ADDED_HEADERS).freeze
52
55
 
56
+ # @param header [Mail::Field, nil]
57
+ # @return [Mail::AddressList, nil]
53
58
  def address_list(header)
54
- header.respond_to?(:element) ? header.element : header&.address_list
59
+ return nil unless header
60
+
61
+ unless header.errors.empty?
62
+ raise Mailtrap::Error, ["failed to parse '#{header.name}': '#{header.unparsed_value}'"]
63
+ end
64
+
65
+ header.respond_to?(:element) ? header.element : header.address_list
55
66
  end
56
67
 
68
+ # @param addresses [Array<Mail::Address>, nil]
57
69
  def prepare_addresses(addresses)
58
70
  Array(addresses).map { |address| prepare_address(address) }
59
71
  end
@@ -66,6 +78,7 @@ module Mailtrap
66
78
  .compact
67
79
  end
68
80
 
81
+ # @param address [Mail::Address]
69
82
  def prepare_address(address)
70
83
  {
71
84
  email: address.address,
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mailtrap
4
- VERSION = '2.1.0'
4
+ VERSION = '2.1.2'
5
5
  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: 2.1.0
4
+ version: 2.1.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: 2024-07-08 00:00:00.000000000 Z
11
+ date: 2024-12-13 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
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 3.3.3